[Bug tree-optimization/84474] New: Unexpected -Wstringop-truncation

romain.geissler at amadeus dot com gcc-bugzilla@gcc.gnu.org
Tue Feb 20 02:51:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84474

            Bug ID: 84474
           Summary: Unexpected -Wstringop-truncation
           Product: gcc
           Version: 8.0.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: romain.geissler at amadeus dot com
  Target Milestone: ---

Hi,

When migrating some code base to gcc 8, I am hitting an issue on this snippet:

<<EOF
#include <string.h>

void f()
{
    char aBuf[3 + 1];
    strncpy(aBuf, "123", 3);
    aBuf[3] = '\0';
}
EOF

compiled with: -Wall -Werror -Wextra -std=gnu++17

I get:
error: ‘char* strncpy(char*, const char*, size_t)’ output truncated before
terminating nul copying 3 bytes from a string of the same length
[-Werror=stringop-truncation]

Here there is really nothing wrong in using strncpy. You might argue that here
using strncpy is useless, while memcpy would simply do the trick. This is true,
but this was extracted from a bigger code base where using strncpy actually
makes sense ("123" is not hardcoded but is a user provided pointer, that gcc is
clever enough to inline with -O2, thus hitting the very same error).

Cheers,
Romain


More information about the Gcc-bugs mailing list