[hwasan] more heap-buffer-overflow tests
authorKostya Serebryany <kcc@google.com>
Fri, 31 Aug 2018 05:05:01 +0000 (05:05 +0000)
committerKostya Serebryany <kcc@google.com>
Fri, 31 Aug 2018 05:05:01 +0000 (05:05 +0000)
llvm-svn: 341162

compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c

index 36c09b2..b5d10de 100644 (file)
@@ -1,16 +1,21 @@
-// RUN: %clang_hwasan  %s -o %t && not %run %t 2>&1 | FileCheck %s
+// RUN: %clang_hwasan  %s -o %t
+// RUN: not %run %t 40 2>&1 | FileCheck %s --check-prefix=CHECK40
+// RUN: not %run %t 80 2>&1 | FileCheck %s --check-prefix=CHECK80
+// RUN: not %run %t -30 2>&1 | FileCheck %s --check-prefix=CHECKm30
 
 // REQUIRES: stable-runtime
-// TODO: test more cases.
 
 #include <stdlib.h>
 #include <stdio.h>
 #include <sanitizer/hwasan_interface.h>
 
-int main() {
+int main(int argc, char **argv) {
   __hwasan_enable_allocator_tagging();
+  int offset = argc < 2 ? 40 : atoi(argv[1]);
   char * volatile x = (char*)malloc(30);
-  x[40] = 42;
-// CHECK: is located 10 bytes to the right of 30-byte region
+  x[offset] = 42;
+// CHECK40: is located 10 bytes to the right of 30-byte region
+// CHECK80: is located 50 bytes to the right of 30-byte region
+// CHECKm30: is located 30 bytes to the left of 30-byte region
   free(x);
 }