From dc2da32a4afd802bfe70f2d6c65b02a0a709ff94 Mon Sep 17 00:00:00 2001 From: Kirill Stoimenov Date: Fri, 3 Nov 2023 18:30:01 +0000 Subject: [PATCH] [HWASAN] Force inteceptors tests for memcmp and bcmp call interceptor --- compiler-rt/test/hwasan/TestCases/bcmp.cpp | 15 +++++++++++---- compiler-rt/test/hwasan/TestCases/memcmp.cpp | 15 +++++++++++---- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/compiler-rt/test/hwasan/TestCases/bcmp.cpp b/compiler-rt/test/hwasan/TestCases/bcmp.cpp index a83147b0f3205..9b21bba56b1be 100644 --- a/compiler-rt/test/hwasan/TestCases/bcmp.cpp +++ b/compiler-rt/test/hwasan/TestCases/bcmp.cpp @@ -4,11 +4,17 @@ // RUN: %clangxx_hwasan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s // REQUIRES: !android +#include #include #include #include #include +__attribute__((no_sanitize("hwaddress"))) void +ForceCallInterceptor(void *p, const void *a, size_t size) { + assert(bcmp(p, a, size) == 0); +} + int main(int argc, char **argv) { __hwasan_enable_allocator_tagging(); char a[] = {static_cast(argc), 2, 3, 4}; @@ -16,13 +22,14 @@ int main(int argc, char **argv) { char *p = (char *)malloc(size); memcpy(p, a, size); free(p); - return bcmp(p, a, size); + ForceCallInterceptor(p, a, size); + return 0; // CHECK: HWAddressSanitizer: tag-mismatch on address // CHECK: READ of size 4 - // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}bcmp.cpp:[[@LINE-3]] + // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}bcmp.cpp:[[@LINE-4]] // CHECK: Cause: use-after-free // CHECK: freed by thread - // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}bcmp.cpp:[[@LINE-7]] + // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}bcmp.cpp:[[@LINE-8]] // CHECK: previously allocated by thread - // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}bcmp.cpp:[[@LINE-11]] + // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}bcmp.cpp:[[@LINE-12]] } diff --git a/compiler-rt/test/hwasan/TestCases/memcmp.cpp b/compiler-rt/test/hwasan/TestCases/memcmp.cpp index 5f8a93f62a44a..31915527c27fd 100644 --- a/compiler-rt/test/hwasan/TestCases/memcmp.cpp +++ b/compiler-rt/test/hwasan/TestCases/memcmp.cpp @@ -3,11 +3,17 @@ // RUN: %clangxx_hwasan -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s // RUN: %clangxx_hwasan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s +#include #include #include #include #include +__attribute__((no_sanitize("hwaddress"))) void +ForceCallInterceptor(void *p, const void *a, size_t size) { + assert(memcmp(p, a, size) == 0); +} + int main(int argc, char **argv) { __hwasan_enable_allocator_tagging(); char a[] = {static_cast(argc), 2, 3, 4}; @@ -15,13 +21,14 @@ int main(int argc, char **argv) { char *p = (char *)malloc(size); memcpy(p, a, size); free(p); - return memcmp(p, a, size); + ForceCallInterceptor(p, a, size); + return 0; // CHECK: HWAddressSanitizer: tag-mismatch on address // CHECK: READ of size 4 - // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}memcmp.cpp:[[@LINE-3]] + // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}memcmp.cpp:[[@LINE-4]] // CHECK: Cause: use-after-free // CHECK: freed by thread - // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}memcmp.cpp:[[@LINE-7]] + // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}memcmp.cpp:[[@LINE-8]] // CHECK: previously allocated by thread - // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}memcmp.cpp:[[@LINE-11]] + // CHECK: #{{[[:digit:]]+}} 0x{{[[:xdigit:]]+}} in main {{.*}}memcmp.cpp:[[@LINE-12]] }