diff options
Diffstat (limited to 'test/hwasan')
-rw-r--r-- | test/hwasan/TestCases/stack-oob.cc | 25 | ||||
-rw-r--r-- | test/hwasan/TestCases/stack-uar.cc | 23 |
2 files changed, 48 insertions, 0 deletions
diff --git a/test/hwasan/TestCases/stack-oob.cc b/test/hwasan/TestCases/stack-oob.cc new file mode 100644 index 000000000..60b9a6295 --- /dev/null +++ b/test/hwasan/TestCases/stack-oob.cc @@ -0,0 +1,25 @@ +// RUN: %clangxx_hwasan -DSIZE=16 -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s +// RUN: %clangxx_hwasan -DSIZE=64 -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s +// RUN: %clangxx_hwasan -DSIZE=0x1000 -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s + +// REQUIRES: stable-runtime + +#include <stdlib.h> +#include <sanitizer/hwasan_interface.h> + +__attribute__((noinline)) +int f() { + char z[SIZE]; + char *volatile p = z; + return p[SIZE]; +} + +int main() { + return f(); + // CHECK: READ of size 1 at + // CHECK: #0 {{.*}} in f{{.*}}stack-oob.cc:14 + + // CHECK: HWAddressSanitizer can not describe address in more detail. + + // CHECK: SUMMARY: HWAddressSanitizer: tag-mismatch {{.*}} in f +} diff --git a/test/hwasan/TestCases/stack-uar.cc b/test/hwasan/TestCases/stack-uar.cc new file mode 100644 index 000000000..e99dcceed --- /dev/null +++ b/test/hwasan/TestCases/stack-uar.cc @@ -0,0 +1,23 @@ +// RUN: %clangxx_hwasan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s + +// REQUIRES: stable-runtime + +#include <stdlib.h> +#include <sanitizer/hwasan_interface.h> + +__attribute__((noinline)) +char *f() { + char z[0x1000]; + char *volatile p = z; + return p; +} + +int main() { + return *f(); + // CHECK: READ of size 1 at + // CHECK: #0 {{.*}} in main{{.*}}stack-uar.cc:16 + + // CHECK: HWAddressSanitizer can not describe address in more detail. + + // CHECK: SUMMARY: HWAddressSanitizer: tag-mismatch {{.*}} in main +} |