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

            Bug ID: 97072
           Summary: -Wanalyzer-malloc-leak false positive when writing
                    through some pointers
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: analyzer
          Assignee: dmalcolm at gcc dot gnu.org
          Reporter: dmalcolm at gcc dot gnu.org
  Target Milestone: ---

Initially seen when writing through an unknown_svalue pointer; this reproducer
captures similar behavior, albeit with a conjured_svalue pointer:

#include <stdlib.h>

void unknown_fn_1 (void *);

void test_1 (int co, int y)
{
  void *p = malloc (1024);
  void **q;
  unknown_fn_1 (&q);
  *q = p;
}

t.c: In function ‘test_1’:
t.c:11:1: warning: leak of ‘p’ [CWE-401] [-Wanalyzer-malloc-leak]
   11 | }
      | ^
  ‘test_1’: events 1-2
    |
    |    7 |   void *p = malloc (1024);
    |      |             ^~~~~~~~~~~~~
    |      |             |
    |      |             (1) allocated here
    |......
    |   11 | }
    |      | ~            
    |      | |
    |      | (2) ‘p’ leaks here; was allocated at (1)
    |

https://godbolt.org/z/WcMWda

The leak warning is a false positive, as p was written to *q.

Reply via email to