about summary refs log tree commit diff homepage
path: root/test/Feature/InAndOutOfBounds.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/Feature/InAndOutOfBounds.c')
-rw-r--r--test/Feature/InAndOutOfBounds.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/test/Feature/InAndOutOfBounds.c b/test/Feature/InAndOutOfBounds.c
new file mode 100644
index 00000000..18e5d2b2
--- /dev/null
+++ b/test/Feature/InAndOutOfBounds.c
@@ -0,0 +1,19 @@
+// RUN: %llvmgcc %s -emit-llvm -O0 -c -o %t1.bc
+// RUN: %klee %t1.bc
+// RUN: test -f klee-last/test000001.ptr.err -o -f klee-last/test000002.ptr.err 
+// RUN: test ! -f klee-last/test000001.ptr.err -o ! -f klee-last/test000002.ptr.err 
+// RUN: test ! -f klee-last/test000003.bout
+
+unsigned klee_urange(unsigned start, unsigned end) {
+  unsigned x;
+  klee_make_symbolic(&x, sizeof x);
+  if (x-start>=end-start) klee_silent_exit(0);
+  return x;
+}
+
+int main() {
+  int *x = malloc(4);
+  x[klee_urange(0,2)] = 1;
+  free(x);
+  return 0;
+}