[Bug middle-end/92814] New: missing -Wstringop-overflow writing into a dynamically allocated flexible array member
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Dec 5 00:33:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92814
Bug ID: 92814
Summary: missing -Wstringop-overflow writing into a dynamically
allocated flexible array member
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
With the first patch for pr91582 applied
(https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00652.html) and with
-Wno-array-bounds, GCC 10 issues -Wstringop-overflow for the buffer overflow in
g() but not in h(). Both should be diagnosed by -Wstringop-overflow.
$ cat t.c && gcc -O2 -S -Wall -Wno-array-bounds t.c
void f (void*);
struct S { int n; char ax[]; };
struct S s = { 3, { 1, 2, 3 } };
void g (void)
{
__builtin_strcpy (s.ax, "123"); // -Wstringop-overflow (good)
}
void h (void)
{
struct S *p = (struct S*)__builtin_malloc (sizeof *p + 3);
__builtin_strcpy (p->ax, "123"); // no warning (w/o -Warray-bounds)
f (p);
}
t.c: In function ‘g’:
t.c:9:3: warning: ‘__builtin_memcpy’ writing 4 bytes into a region of size 3
overflows the destination [-Wstringop-overflow=]
9 | __builtin_strcpy (s.ax, "123"); // -Wstringop-overflow (good)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
More information about the Gcc-bugs
mailing list