undef-buffers.c revision 5188507b9a1b09ec95c14ffadf0e832f2b47aa8a
1// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.experimental,core.uninitialized -analyzer-store=region -verify %s
2typedef __typeof(sizeof(int)) size_t;
3void *malloc(size_t);
4void free(void *);
5
6char stackBased1 () {
7  char buf[2];
8  buf[0] = 'a';
9  return buf[1]; // expected-warning{{Undefined}}
10}
11
12char stackBased2 () {
13  char buf[2];
14  buf[1] = 'a';
15  return buf[0]; // expected-warning{{Undefined}}
16}
17
18char heapBased1 () {
19  char *buf = malloc(2);
20  buf[0] = 'a';
21  char result = buf[1]; // expected-warning{{undefined}}
22  free(buf);
23  return result;
24}
25
26char heapBased2 () {
27  char *buf = malloc(2);
28  buf[1] = 'a';
29  char result = buf[0]; // expected-warning{{undefined}}
30  free(buf);
31  return result;
32}
33