[Bug c/83959] New: Missing buffer overflow warning on printf %s

prathamesh3492 at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Jan 21 18:00:00 GMT 2018


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


More information about the Gcc-bugs mailing list