diff options
-rw-r--r-- | compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c b/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c index 36c09b294cc..b5d10def307 100644 --- a/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c +++ b/compiler-rt/test/hwasan/TestCases/heap-buffer-overflow.c @@ -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); } |