brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · c3a8d4d Raw
60 lines · plain
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,osx.cocoa.RetainCount,alpha.core -fblocks -analyzer-output=plist -o %t %s2// RUN: %normalize_plist <%t | diff -ub %S/Inputs/expected-plists/plist-output-alternate.m.plist -3 4void test_null_init(void) {5  int *p = 0;6  *p = 0xDEADBEEF;7}8 9void test_null_assign(void) {10  int *p;11  p = 0;12  *p = 0xDEADBEEF;13}14 15void test_null_assign_transitive(void) {16  int *p;17  p = 0;18  int *q = p;19  *q = 0xDEADBEEF;20}21 22void test_null_cond(int *p) {23  if (!p) {24    *p = 0xDEADBEEF;25  }26}27 28void test_null_cond_transitive(int *q) {29  if (!q) {30    int *p = q;31    *p = 0xDEADBEEF;32  }33}34 35void test_null_field(void) {36  struct s { int *p; } x;37  x.p = 0;38  *(x.p) = 0xDEADBEEF;39}40 41// leak reports should not show paths that end with exit() (but ones that don't end with exit())42void panic(void) __attribute__((noreturn));43enum { kCFNumberSInt8Type = 1,     kCFNumberSInt16Type = 2,     kCFNumberSInt32Type = 3,     kCFNumberSInt64Type = 4,     kCFNumberFloat32Type = 5,     kCFNumberFloat64Type = 6,      kCFNumberCharType = 7,     kCFNumberShortType = 8,     kCFNumberIntType = 9,     kCFNumberLongType = 10,     kCFNumberLongLongType = 11,     kCFNumberFloatType = 12,     kCFNumberDoubleType = 13,      kCFNumberCFIndexType = 14,      kCFNumberNSIntegerType = 15,     kCFNumberCGFloatType = 16,     kCFNumberMaxType = 16    };44typedef const struct __CFAllocator * CFAllocatorRef;45extern const CFAllocatorRef kCFAllocatorDefault;46typedef signed long CFIndex;47typedef CFIndex CFNumberType;48typedef const struct __CFNumber * CFNumberRef;49 50extern CFNumberRef CFNumberCreate(CFAllocatorRef allocator, CFNumberType theType, const void *valuePtr);51 52void rdar8331641(int x) {53  signed z = 1;54  CFNumberRef value = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &z); // expected-warning{{leak}}55  if (x)56    panic();57  (void) value;58}59 60