mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-11 05:54:39 +00:00
8df44eea6d
gcc-12 and above report a wrong warning about a negative length being passed to memcmp() on an impossible code path when built at -O0. The pattern is the same at a few places, basically: int foo(int op, const void *a, const void *b, size_t size, size_t arg) { if (op == 1) // arg is a strict multiple of size return memcmp(a, b, arg - size); return 0; } ... int bar() { return foo(0, a, b, sizeof(something), 0); } It *might* be possible to invent dummy values for the "len" argument above in the real code, but that significantly complexifies it and as usual can easily result in introducing undesired bugs. Here we take a different approach consisting in shutting the -Wstringop-overread warning on gcc>=12 at -O0 since that's the only condition that triggers it. The issue was reported to and confirmed by the gcc team here: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114622 No backport needed, but this should be upstreamed into cebtree after checking that all involved macros are available. |
||
---|---|---|
.. | ||
atomic-ops.h | ||
cebtree-prv.h | ||
cebtree.h | ||
cebu32_tree.h | ||
cebu64_tree.h | ||
cebua_tree.h | ||
cebub_tree.h | ||
cebuib_tree.h | ||
cebuis_tree.h | ||
cebul_tree.h | ||
cebus_tree.h | ||
eb32sctree.h | ||
eb32tree.h | ||
eb64tree.h | ||
ebimtree.h | ||
ebistree.h | ||
ebmbtree.h | ||
ebpttree.h | ||
ebsttree.h | ||
ebtree-t.h | ||
ebtree.h | ||
ist.h | ||
lru.h | ||
mjson.h | ||
mt_list.h | ||
plock.h | ||
sha1.h | ||
slz-tables.h | ||
slz.h | ||
xxhash.h |