aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/leak-3.c
blob: d11cc03b36f0dbe15480f77a6c83a68f997fa869 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <stdlib.h>

/* Reduced from Juliet 1.3's CWE415_Double_Free__malloc_free_char_67a.c
   goodG2B which was showing a false leak report in a non-LTO build.  */

struct s1
{
    char * structFirst;
};
void external_fn_1(struct s1 myStruct);
void test_1()
{
    char * data;
    struct s1 myStruct;
    data = (char *)malloc(100*sizeof(char));
    if (data == NULL)
      exit(-1);
    myStruct.structFirst = data;
    external_fn_1(myStruct);
} /* { dg-bogus "leak of 'data'" } */

/* As above, but with padding before the field.  */

struct s2
{
  void *padding;
  char *ptr;
};
void external_fn_2(struct s2 myStruct);
void test_2()
{
    char * data;
    struct s2 myStruct;
    data = (char *)malloc(100*sizeof(char));
    if (data == NULL)
      exit(-1);
    myStruct.padding = NULL;
    myStruct.ptr = data;
    external_fn_2(myStruct);
} /* { dg-bogus "leak of 'data'" } */