blob: 2e66e18b66a5a9d7991d82df63bdc5aab2742074 [file] [log] [blame]
Ted Kremenekd71ed262008-04-10 22:16:52 +00001// RUN: clang -checker-simple -verify %s
Ted Kremenek2f54af42008-04-02 16:54:39 +00002
Ted Kremenek0fe33bc2008-04-22 21:10:18 +00003#include<stdint.h>
4
Ted Kremenek2f54af42008-04-02 16:54:39 +00005void f1(int *p) {
6 if (p) *p = 1;
7 else *p = 0; // expected-warning{{ereference}}
8}
Ted Kremenekb9ab6902008-04-21 23:44:17 +00009
10struct foo_struct {
11 int x;
12};
13
14int f2(struct foo_struct* p) {
15
16 if (p)
17 p->x = 1;
18
Ted Kremenek3603d732008-04-21 23:45:26 +000019 return p->x++; // expected-warning{{Dereference of null pointer.}}
Ted Kremenekb9ab6902008-04-21 23:44:17 +000020}
Ted Kremenek9704eac2008-04-22 04:56:55 +000021
22int f3(char* x) {
23
24 int i = 2;
25
26 if (x)
27 return x[i - 1];
28
29 return x[i+1]; // expected-warning{{Dereference of null pointer.}}
30}
31
Ted Kremenek0fe33bc2008-04-22 21:10:18 +000032int f4(int *p) {
33
34 uintptr_t x = p;
35
36 if (x)
37 return 1;
38
39 int *q = (int*) x;
40 return *q; // expected-warning{{Dereference of null pointer.}}
Ted Kremeneka5488462008-04-22 21:39:21 +000041}
42
43int f5() {
44
45 char *s = "hello world";
46 return s[0]; // no-warning
47}
48