[Bug middle-end/79016] New: missing -Wstringop-overflow= overflowing allocated buffers

msebor at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 6 16:15:00 GMT 2017


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

            Bug ID: 79016
           Summary: missing -Wstringop-overflow= overflowing allocated
                    buffers
           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 -Wstringop-overflow warning correctly detects the buffer overflow in the
fauto() and funnamed() functions below but misses all the other instances of it
in the rest of the functions.

$ cat b.c && gcc -O2 -S -Wall -Wextra -Wpedantic b.c
void f (void*);

void fauto (void)
{
  char d[3];

  f (__builtin_memset (d, 0, 5));
}

void funnamed (void)
{
  f (__builtin_memset ((char[3]){ 0 }, 1, 5));
}

void falloca (void)
{
  char *d = __builtin_alloca (3);

  f (__builtin_memset (d, 0, 5));
}

void fmalloc (void)
{
  char *d = __builtin_malloc (3);

  f (__builtin_memset (d, 0, 5));
}

void fvla (unsigned n)
{
  if (n > 3)
    n = 3;

  char d [n];

  f (__builtin_memset (d, 0, 5));
}

b.c: In function ‘fauto’:
b.c:7:3: warning: ‘__builtin_memset’ writing 5 bytes into a region of size 3
overflows the destination [-Wstringop-overflow=]
   f (__builtin_memset (d, 0, 5));
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
b.c: In function ‘funnamed’:
b.c:12:3: warning: ‘__builtin_memset’ writing 5 bytes into a region of size 3
overflows the destination [-Wstringop-overflow=]
   f (__builtin_memset ((char[3]){ 0 }, 1, 5));
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


More information about the Gcc-bugs mailing list