https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93665
Bug ID: 93665 Summary: missing warning on strncmp reading past unterminated array 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: --- GCC 10 diagnoses the call to strcmp below because it attempts to read past the end of the unterminated array a3 but not the call to strncmp even though it has the same bug. $ cat z.c && gcc -O2 -S -Wall -Wextra -Wpedantic z.c const char a3[] = { 'a', 'b', 'c' }; const char s4[] = "abcd"; int f (void) { return __builtin_strcmp (a3, s4); // warning (good) } int g (void) { return __builtin_strncmp (a3, s4, sizeof s4); // missing warning } z.c: In function ‘f’: z.c:6:10: warning: ‘__builtin_strcmp’ argument missing terminating nul [-Wstringop-overflow=] 6 | return __builtin_strcmp (a3, s4); // warning (good) | ^~~~~~~~~~~~~~~~~~~~~~~~~ z.c:1:12: note: referenced argument declared here 1 | const char a3[] = { 'a', 'b', 'c' }; | ^~