[Bug tree-optimization/84398] New: missing -Wstringop-truncation on strncpy into VLA and dynamically allocated arrays
msebor at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Thu Feb 15 01:17:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84398
Bug ID: 84398
Summary: missing -Wstringop-truncation on strncpy into VLA and
dynamically allocated arrays
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
-stringop-truncation works as expected with statically allocated arrays but
fails to detect the same problem involving dynamically allocated arrays.
$ cat t.c && gcc -O2 -S -Wall t.c
void sink (void*);
void f0 (const char *s)
{
char a[7];
__builtin_strncpy (a, s, sizeof a); // -Wstringop-truncation (good)
sink (a);
}
void f1 (const char *s, unsigned n)
{
if (n > 256)
n = 256;
char a[n];
__builtin_strncpy (a, s, n); // missing warning
sink (a);
}
void f2 (const char *s, unsigned n)
{
if (n > 256)
n = 256;
char *p = __builtin_alloca (n); // missing warning
__builtin_strncpy (p, s, n);
sink (p);
}
void f3 (const char *s, unsigned n)
{
if (n > 256)
n = 256;
char *p = __builtin_malloc (n);
__builtin_strncpy (p, s, n); // missing warning
sink (p);
}
t.c: In function ‘f0’:
t.c:6:3: warning: ‘__builtin_strncpy’ specified bound 7 equals destination size
[-Wstringop-truncation]
__builtin_strncpy (a, s, sizeof a); // -Wstringop-truncation (good)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
More information about the Gcc-bugs
mailing list