teak-llvm/clang/test/Analysis/undef-buffers.c
Kristof Umann 748c139ade [analyzer] Emit an error rather than assert on invalid checker option input
Asserting on invalid input isn't very nice, hence the patch to emit an error
instead.

This is the first of many patches to overhaul the way we handle checker options.

Differential Revision: https://reviews.llvm.org/D57850

llvm-svn: 355704
2019-03-08 16:00:42 +00:00

49 lines
1.0 KiB
C

// RUN: %clang_analyze_cc1 -analyzer-store=region -verify %s \
// RUN: -analyzer-checker=core \
// RUN: -analyzer-checker=unix \
// RUN: -analyzer-checker=core.uninitialized \
// RUN: -analyzer-config unix.DynamicMemoryModeling:Optimistic=true
typedef __typeof(sizeof(int)) size_t;
void *malloc(size_t);
void free(void *);
char stackBased1 () {
char buf[2];
buf[0] = 'a';
return buf[1]; // expected-warning{{Undefined}}
}
char stackBased2 () {
char buf[2];
buf[1] = 'a';
return buf[0]; // expected-warning{{Undefined}}
}
// Exercise the conditional visitor. Radar://10105448
char stackBased3 (int *x) {
char buf[2];
int *y;
buf[0] = 'a';
if (!(y = x)) {
return buf[1]; // expected-warning{{Undefined}}
}
return buf[0];
}
char heapBased1 () {
char *buf = malloc(2);
buf[0] = 'a';
char result = buf[1]; // expected-warning{{undefined}}
free(buf);
return result;
}
char heapBased2 () {
char *buf = malloc(2);
buf[1] = 'a';
char result = buf[0]; // expected-warning{{undefined}}
free(buf);
return result;
}