This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/79222] New: missing -Wstringop-overflow= on a stpcpy overflow


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

            Bug ID: 79222
           Summary: missing -Wstringop-overflow= on a stpcpy overflow
           Product: gcc
           Version: 7.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: ---

The new -Wstrop-overflow added in r243419 fails to diagnose buffer overflows
caused by calls to the stpcpy function.  Looks like I missed that function.

$ cat t.c && gcc -O2 -S -Wall -Wextra -Wpedantic
-fdump-tree-optimized=/dev/stdout t.c
char d[3];

char* f (int i)
{
  const char *s = i < 0 ? "01234567" : "9876543210";
  return __builtin_stpcpy (d, s);
}

;; Function f (f, funcdef_no=0, decl_uid=1796, cgraph_uid=0, symbol_order=1)

Removing basic block 3
f (int i)
{
  const char * iftmp.0_1;
  char * _5;

  <bb 2> [100.00%]:
  if (i_2(D) < 0)
    goto <bb 4>; [32.39%]
  else
    goto <bb 3>; [67.61%]

  <bb 3> [67.61%]:

  <bb 4> [100.00%]:
  # iftmp.0_1 = PHI <"01234567"(2), "9876543210"(3)>
  _5 = __builtin_stpcpy (&d, iftmp.0_1); [tail call]
  return _5;

}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]