[Bug c++/83431] New: -Wformat-truncation may incorrectly report truncation
bugzilla@poradnik-webmastera.com
gcc-bugzilla@gcc.gnu.org
Thu Dec 14 18:32:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83431
Bug ID: 83431
Summary: -Wformat-truncation may incorrectly report truncation
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: bugzilla@poradnik-webmastera.com
Target Milestone: ---
This looks like another missing optimization - -Wformat-truncation does not
take into account that there is "if" which checks that truncation will not
happen.
[code]
#include <stdio.h>
#include <string.h>
struct S
{
char str[20];
char out[10];
};
void test(S* s)
{
if (strlen(s->str) < sizeof(s->out) - 2)
snprintf(s->out, sizeof(s->out), "[%s]", s->str);
}
[/code]
[out]
$ g++ -c -o test.o test.cc -O2 -Wall
test.cc: In function ‘void test(S*)’:
test.cc:10:6: warning: ‘%s’ directive output may be truncated writing up to 19
bytes into a region of size 9 [-Wformat-truncation=]
void test(S* s)
^~~~
test.cc:13:17: note: ‘snprintf’ output between 3 and 22 bytes into a
destination of size 10
snprintf(s->out, sizeof(s->out), "[%s]", s->str);
~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[/out]
g++ --version
g++ (GCC) 8.0.0 20171210 (experimental)
More information about the Gcc-bugs
mailing list