summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/msan/msan_interceptors.cc5
-rw-r--r--lib/sanitizer_common/sanitizer_common_interceptors.inc36
-rw-r--r--lib/sanitizer_common/sanitizer_platform_interceptors.h3
-rw-r--r--test/asan/TestCases/Linux/bcmp_test.cc23
-rw-r--r--test/asan/TestCases/Linux/bcopy_test.cc22
-rw-r--r--test/asan/TestCases/Linux/bzero_test.cc13
6 files changed, 5 insertions, 97 deletions
diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc
index f8137acf0..53f10ab8e 100644
--- a/lib/msan/msan_interceptors.cc
+++ b/lib/msan/msan_interceptors.cc
@@ -178,6 +178,10 @@ INTERCEPTOR(void *, memset, void *s, int c, SIZE_T n) {
return __msan_memset(s, c, n);
}
+INTERCEPTOR(void *, bcopy, const void *src, void *dest, SIZE_T n) {
+ return __msan_memmove(dest, src, n);
+}
+
INTERCEPTOR(int, posix_memalign, void **memptr, SIZE_T alignment, SIZE_T size) {
GET_MALLOC_STACK_TRACE;
CHECK_EQ(alignment & (alignment - 1), 0);
@@ -1515,6 +1519,7 @@ void InitializeInterceptors() {
INTERCEPT_FUNCTION(mempcpy);
INTERCEPT_FUNCTION(memset);
INTERCEPT_FUNCTION(memmove);
+ INTERCEPT_FUNCTION(bcopy);
INTERCEPT_FUNCTION(wmemset);
INTERCEPT_FUNCTION(wmemcpy);
INTERCEPT_FUNCTION(wmempcpy);
diff --git a/lib/sanitizer_common/sanitizer_common_interceptors.inc b/lib/sanitizer_common/sanitizer_common_interceptors.inc
index 320bdde75..90fb43441 100644
--- a/lib/sanitizer_common/sanitizer_common_interceptors.inc
+++ b/lib/sanitizer_common/sanitizer_common_interceptors.inc
@@ -4906,39 +4906,6 @@ INTERCEPTOR(void *, __bzero, void *block, uptr size) {
#define INIT___BZERO
#endif // SANITIZER_INTERCEPT___BZERO
-#if SANITIZER_INTERCEPT_BZERO
-DECLARE_REAL_AND_INTERCEPTOR(void *, memset, void *, int, uptr)
-
-INTERCEPTOR(void, bzero, void *block, uptr size) {
- WRAP(memset)(block, 0, size);
-}
-#define INIT_BZERO COMMON_INTERCEPT_FUNCTION(bzero);
-#else
-#define INIT_BZERO
-#endif // SANITIZER_INTERCEPT_BZERO
-
-#if SANITIZER_INTERCEPT_BCOPY
-DECLARE_REAL_AND_INTERCEPTOR(void *, memmove, void *, const void *, uptr)
-
-INTERCEPTOR(void, bcopy, const void *src, void *dest, uptr size) {
- WRAP(memmove)(dest, src, size);
-}
-#define INIT_BCOPY COMMON_INTERCEPT_FUNCTION(bcopy);
-#else
-#define INIT_BCOPY
-#endif // SANITIZER_INTERCEPT_BCOPY
-
-#if SANITIZER_INTERCEPT_BCMP
-DECLARE_REAL_AND_INTERCEPTOR(int, memcmp, const void *, const void *, uptr)
-
-INTERCEPTOR(int, bcmp, const void *s1, const void *s2, uptr size) {
- return WRAP(memcmp)(s1, s2, size);
-}
-#define INIT_BCMP COMMON_INTERCEPT_FUNCTION(bcmp);
-#else
-#define INIT_BCMP
-#endif // SANITIZER_INTERCEPT_BCMP
-
#if SANITIZER_INTERCEPT_FTIME
INTERCEPTOR(int, ftime, __sanitizer_timeb *tp) {
void *ctx;
@@ -6089,9 +6056,6 @@ static void InitializeCommonInterceptors() {
INIT_CAPGET;
INIT_AEABI_MEM;
INIT___BZERO;
- INIT_BZERO;
- INIT_BCOPY;
- INIT_BCMP;
INIT_FTIME;
INIT_XDR;
INIT_TSEARCH;
diff --git a/lib/sanitizer_common/sanitizer_platform_interceptors.h b/lib/sanitizer_common/sanitizer_platform_interceptors.h
index d54463a69..8904a12f9 100644
--- a/lib/sanitizer_common/sanitizer_platform_interceptors.h
+++ b/lib/sanitizer_common/sanitizer_platform_interceptors.h
@@ -274,9 +274,6 @@
#define SANITIZER_INTERCEPT_AEABI_MEM 0
#endif
#define SANITIZER_INTERCEPT___BZERO SI_MAC
-#define SANITIZER_INTERCEPT_BZERO SI_LINUX || SI_FREEBSD || SI_MAC
-#define SANITIZER_INTERCEPT_BCOPY SI_LINUX || SI_FREEBSD || SI_MAC
-#define SANITIZER_INTERCEPT_BCMP SI_LINUX || SI_FREEBSD || SI_MAC
#define SANITIZER_INTERCEPT_FTIME !SI_FREEBSD && SI_NOT_WINDOWS
#define SANITIZER_INTERCEPT_XDR SI_LINUX_NOT_ANDROID
#define SANITIZER_INTERCEPT_TSEARCH SI_LINUX_NOT_ANDROID || SI_MAC
diff --git a/test/asan/TestCases/Linux/bcmp_test.cc b/test/asan/TestCases/Linux/bcmp_test.cc
deleted file mode 100644
index 61853f08f..000000000
--- a/test/asan/TestCases/Linux/bcmp_test.cc
+++ /dev/null
@@ -1,23 +0,0 @@
-// RUN: %clangxx_asan %s -o %t
-// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=A1
-// RUN: not %run %t 1 2>&1 | FileCheck %s --check-prefix=A2
-// RUN: %env_asan_opts=intercept_memcmp=0 %run %t
-
-#include <strings.h>
-int main(int argc, char **argv) {
- char a1[] = {1, 2, 3, 4, 5, 6, 7, 8};
- char a2[] = {3, 4, 5, 6, 7, 8, 9};
- int res;
- if (argc == 1)
- res = bcmp(a1, a2, sizeof(a1)); // BOOM
- else
- res = bcmp(a2, a1, sizeof(a1)); // BOOM
- // A1: AddressSanitizer: stack-buffer-overflow
- // A1: {{#0.*memcmp}}
- // A1: 'a2' <== Memory access at offset
- //
- // A2: AddressSanitizer: stack-buffer-overflow
- // A2: {{#0.*memcmp}}
- // A2: 'a2' <== Memory access at offset
- return res == 0;
-}
diff --git a/test/asan/TestCases/Linux/bcopy_test.cc b/test/asan/TestCases/Linux/bcopy_test.cc
deleted file mode 100644
index ad21b719b..000000000
--- a/test/asan/TestCases/Linux/bcopy_test.cc
+++ /dev/null
@@ -1,22 +0,0 @@
-// RUN: %clangxx_asan %s -o %t
-// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=A1
-// RUN: not %run %t 1 2>&1 | FileCheck %s --check-prefix=A2
-// RUN: %env_asan_opts=replace_intrin=0 %run %t
-
-#include <strings.h>
-int main(int argc, char **argv) {
- char a1[] = {1, 2, 3, 4, 5, 6, 7, 8};
- char a2[] = {3, 4, 5, 6, 7, 8, 9};
- if (argc == 1)
- bcopy(a1, a2, sizeof(a1)); // BOOM
- else
- bcopy(a2, a1, sizeof(a1)); // BOOM
- // A1: AddressSanitizer: stack-buffer-overflow
- // A1: {{#0.*memmove}}
- // A1: 'a2' <== Memory access at offset
- //
- // A2: AddressSanitizer: stack-buffer-overflow
- // A2: {{#0.*memmove}}
- // A2: 'a2' <== Memory access at offset
- return 0;
-}
diff --git a/test/asan/TestCases/Linux/bzero_test.cc b/test/asan/TestCases/Linux/bzero_test.cc
deleted file mode 100644
index 8149ad97a..000000000
--- a/test/asan/TestCases/Linux/bzero_test.cc
+++ /dev/null
@@ -1,13 +0,0 @@
-// RUN: %clangxx_asan %s -o %t
-// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=A1
-// RUN: %env_asan_opts=replace_intrin=0 %run %t
-
-#include <strings.h>
-int main(int argc, char **argv) {
- char a1[] = {1, 2, 3, 4, 5, 6, 7, 8};
- bzero(a1, sizeof(a1) + 1); // BOOM
- // A1: AddressSanitizer: stack-buffer-overflow
- // A1: {{#0.*memset}}
- // A1: 'a1' <== Memory access at offset
- return 0;
-}