forked from OSchip/llvm-project
59 lines
838 B
C
59 lines
838 B
C
// RUN: clang -checker-simple -verify %s
|
|
|
|
#include<stdint.h>
|
|
|
|
void f1(int *p) {
|
|
if (p) *p = 1;
|
|
else *p = 0; // expected-warning{{ereference}}
|
|
}
|
|
|
|
struct foo_struct {
|
|
int x;
|
|
};
|
|
|
|
int f2(struct foo_struct* p) {
|
|
|
|
if (p)
|
|
p->x = 1;
|
|
|
|
return p->x++; // expected-warning{{Dereference of null pointer.}}
|
|
}
|
|
|
|
int f3(char* x) {
|
|
|
|
int i = 2;
|
|
|
|
if (x)
|
|
return x[i - 1];
|
|
|
|
return x[i+1]; // expected-warning{{Dereference of null pointer.}}
|
|
}
|
|
|
|
int f3_b(char* x) {
|
|
|
|
int i = 2;
|
|
|
|
if (x)
|
|
return x[i - 1];
|
|
|
|
return x[i+1]++; // expected-warning{{Dereference of null pointer.}}
|
|
}
|
|
|
|
int f4(int *p) {
|
|
|
|
uintptr_t x = p;
|
|
|
|
if (x)
|
|
return 1;
|
|
|
|
int *q = (int*) x;
|
|
return *q; // expected-warning{{Dereference of null pointer.}}
|
|
}
|
|
|
|
int f5() {
|
|
|
|
char *s = "hello world";
|
|
return s[0]; // no-warning
|
|
}
|
|
|