https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83959
Bug ID: 83959 Summary: Missing buffer overflow warning on printf %s Product: gcc Version: 8.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: prathamesh3492 at gcc dot gnu.org Target Milestone: --- int main(void) { char a[3] = "xyz"; __builtin_printf ("%s", a); return 0; } No warning generated with -Wall -Wextra -Wstringop-overflow=2. Should -Wstringop-overflow be catching this case ? I wonder if the compiler should warn (with Wextra maybe?) for char a[3] = "xyz"; ie when sizeof(array) == strlen(initializier) ? Although the above initializer doesn't cause overflow by itself, I suppose almost all string functions expect char arrays to end with '\0' and would end up looking past end of array thus causing overflow. Thanks, Prathamesh