aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/analyzer/attr-malloc-pr108252.c
blob: 5e3437985cb8acbc27c23b9bfce9cdd9b0850658 (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
struct foo
{
  int m_int;
};

extern void foo_release (struct foo *);
extern struct foo *foo_acquire (void)
  __attribute__ ((malloc (foo_release)));

struct {
  /* [...snip...] */
  struct foo *listen_default_ciphers;
  struct foo *connect_default_ciphers;
  /* [...snip...] */
} g;

int parse_global_ciphers(char **args)
{
  struct foo **target;
  target = ((args[0][12] == 'b')
	    ? &g.listen_default_ciphers
	    : &g.connect_default_ciphers);
  *target = foo_acquire ();
  return 0; /* { dg-bogus "leak" } */
}