diff --git a/compiler-rt/lib/msan/msan_interceptors.cpp b/compiler-rt/lib/msan/msan_interceptors.cpp --- a/compiler-rt/lib/msan/msan_interceptors.cpp +++ b/compiler-rt/lib/msan/msan_interceptors.cpp @@ -145,6 +145,8 @@ #if !SANITIZER_NETBSD INTERCEPTOR(void *, mempcpy, void *dest, const void *src, SIZE_T n) { + if (IsInInterceptorScope()) + return REAL(memcpy)(dest, src, n); return (char *)__msan_memcpy(dest, src, n) + n; } #define MSAN_MAYBE_INTERCEPT_MEMPCPY INTERCEPT_FUNCTION(mempcpy) @@ -826,6 +828,7 @@ INTERCEPTOR(int, gethostname, char *name, SIZE_T len) { ENSURE_MSAN_INITED(); + InterceptorScope interceptor_scope; int res = REAL(gethostname)(name, len); if (!res) { SIZE_T real_len = REAL(strnlen)(name, len); @@ -1327,6 +1330,8 @@ #define COMMON_INTERCEPTOR_MEMCPY_IMPL(ctx, to, from, size) \ { \ (void)ctx; \ + if (IsInInterceptorScope()) \ + return REAL(memcpy)(to, from, size); \ return __msan_memcpy(to, from, size); \ }