Package: gcc-12
Version: 12-20220302-1
Severity: normal

Dear GCC maintainers,

The following sample code gives a spurious warning with gcc-12:

gcc-12 -c -O3 -Wall test.c
test.c: In function ‘fun’:
test.c:5:25: warning: pointer ‘old’ used after ‘realloc’
[-Wuse-after-free]
    5 |   unsigned long  s = new-old;
      |                      ~~~^~~~
test.c:4:15: note: call to ‘realloc’ here
    4 |   void *new = realloc(old, n);
      |               ^~~~~~~~~~~~~~~

It should check that "old" is dereferenced.

Cheers,
-- 
Bill. <ballo...@debian.org>

Imagine a large red swirl here. 
#include <stdlib.h>
unsigned long fun(void *old, void **ptr, size_t n)
{
  void *new = realloc(old, n);
  unsigned long  s = new-old;
  *ptr = new;
  return s;
}

Reply via email to