<div dir="ltr">ouch. thanks! <div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 18, 2017 at 2:31 AM, Daniel Jasper via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: djasper<br>
Date: Thu May 18 04:31:37 2017<br>
New Revision: 303339<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=303339&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=303339&view=rev</a><br>
Log:<br>
Revert r302781 and subsequent attempts to disable part of it.<br>
<br>
The Msan unit tests are still broken and by this point, I think we<br>
should start over.<br>
<br>
Removed:<br>
    compiler-rt/trunk/test/asan/<wbr>TestCases/Posix/strndup_oob_<wbr>test.cc<br>
    compiler-rt/trunk/test/msan/<wbr>strndup.cc<br>
Modified:<br>
    compiler-rt/trunk/lib/asan/<wbr>asan_flags.cc<br>
    compiler-rt/trunk/lib/asan/<wbr>tests/asan_str_test.cc<br>
    compiler-rt/trunk/lib/msan/<wbr>msan_interceptors.cc<br>
    compiler-rt/trunk/lib/msan/<wbr>tests/msan_test.cc<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>common_interceptors.inc<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>platform_interceptors.h<br>
    compiler-rt/trunk/lib/<wbr>sanitizer_common/tests/<wbr>sanitizer_test_utils.h<br>
<br>
Modified: compiler-rt/trunk/lib/asan/<wbr>asan_flags.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/asan_flags.cc?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>asan/asan_flags.cc?rev=303339&<wbr>r1=303338&r2=303339&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/asan/<wbr>asan_flags.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/<wbr>asan_flags.cc Thu May 18 04:31:37 2017<br>
@@ -194,10 +194,6 @@ void InitializeFlags() {<br>
     Report("WARNING: strchr* interceptors are enabled even though "<br>
            "replace_str=0. Use intercept_strchr=0 to disable them.");<br>
   }<br>
-  if (!f->replace_str && common_flags()->intercept_<wbr>strndup) {<br>
-    Report("WARNING: strndup* interceptors are enabled even though "<br>
-           "replace_str=0. Use intercept_strndup=0 to disable them.");<br>
-  }<br>
 }<br>
<br>
 }  // namespace __asan<br>
<br>
Modified: compiler-rt/trunk/lib/asan/<wbr>tests/asan_str_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/asan_str_test.cc?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>asan/tests/asan_str_test.cc?<wbr>rev=303339&r1=303338&r2=<wbr>303339&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/asan/<wbr>tests/asan_str_test.cc (original)<br>
+++ compiler-rt/trunk/lib/asan/<wbr>tests/asan_str_test.cc Thu May 18 04:31:37 2017<br>
@@ -154,27 +154,6 @@ TEST(AddressSanitizer, MAYBE_StrDupOOBTe<br>
   free(str);<br>
 }<br>
<br>
-#if SANITIZER_TEST_HAS_STRNDUP<br>
-TEST(AddressSanitizer, MAYBE_StrNDupOOBTest) {<br>
-  size_t size = Ident(42);<br>
-  char *str = MallocAndMemsetString(size);<br>
-  char *new_str;<br>
-  // Normal strndup calls.<br>
-  str[size - 1] = '\0';<br>
-  new_str = strndup(str, size - 13);<br>
-  free(new_str);<br>
-  new_str = strndup(str + size - 1, 13);<br>
-  free(new_str);<br>
-  // Argument points to not allocated memory.<br>
-  EXPECT_DEATH(Ident(strndup(str - 1, 13)), LeftOOBReadMessage(1));<br>
-  EXPECT_DEATH(Ident(strndup(str + size, 13)), RightOOBReadMessage(0));<br>
-  // Overwrite the terminating '\0' and hit unallocated memory.<br>
-  str[size - 1] = 'z';<br>
-  EXPECT_DEATH(Ident(strndup(<wbr>str, size + 13)), RightOOBReadMessage(0));<br>
-  free(str);<br>
-}<br>
-#endif // SANITIZER_TEST_HAS_STRNDUP<br>
-<br>
 TEST(AddressSanitizer, StrCpyOOBTest) {<br>
   size_t to_size = Ident(30);<br>
   size_t from_size = Ident(6);  // less than to_size<br>
<br>
Modified: compiler-rt/trunk/lib/msan/<wbr>msan_interceptors.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>msan/msan_interceptors.cc?rev=<wbr>303339&r1=303338&r2=303339&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/msan/<wbr>msan_interceptors.cc (original)<br>
+++ compiler-rt/trunk/lib/msan/<wbr>msan_interceptors.cc Thu May 18 04:31:37 2017<br>
@@ -341,6 +341,33 @@ INTERCEPTOR(char *, __strdup, char *src)<br>
 #define MSAN_MAYBE_INTERCEPT___STRDUP<br>
 #endif<br>
<br>
+INTERCEPTOR(char *, strndup, char *src, SIZE_T n) {<br>
+  ENSURE_MSAN_INITED();<br>
+  GET_STORE_STACK_TRACE;<br>
+  // On FreeBSD strndup() leverages strnlen().<br>
+  InterceptorScope interceptor_scope;<br>
+  SIZE_T copy_size = REAL(strnlen)(src, n);<br>
+  char *res = REAL(strndup)(src, n);<br>
+  CopyShadowAndOrigin(res, src, copy_size, &stack);<br>
+  __msan_unpoison(res + copy_size, 1); // \0<br>
+  return res;<br>
+}<br>
+<br>
+#if !SANITIZER_FREEBSD<br>
+INTERCEPTOR(char *, __strndup, char *src, SIZE_T n) {<br>
+  ENSURE_MSAN_INITED();<br>
+  GET_STORE_STACK_TRACE;<br>
+  SIZE_T copy_size = REAL(strnlen)(src, n);<br>
+  char *res = REAL(__strndup)(src, n);<br>
+  CopyShadowAndOrigin(res, src, copy_size, &stack);<br>
+  __msan_unpoison(res + copy_size, 1); // \0<br>
+  return res;<br>
+}<br>
+#define MSAN_MAYBE_INTERCEPT___STRNDUP INTERCEPT_FUNCTION(__strndup)<br>
+#else<br>
+#define MSAN_MAYBE_INTERCEPT___STRNDUP<br>
+#endif<br>
+<br>
 INTERCEPTOR(char *, gcvt, double number, SIZE_T ndigit, char *buf) {<br>
   ENSURE_MSAN_INITED();<br>
   char *res = REAL(gcvt)(number, ndigit, buf);<br>
@@ -1344,13 +1371,6 @@ int OnExit() {<br>
     return __msan_memcpy(to, from, size);                   \<br>
   }<br>
<br>
-#define COMMON_INTERCEPTOR_COPY_<wbr>STRING(ctx, to, from, size)                    \<br>
-  do {                                                                         \<br>
-    GET_STORE_STACK_TRACE;                                                     \<br>
-    CopyShadowAndOrigin(to, from, size, &stack);                               \<br>
-    __msan_unpoison(to + size, 1);                                             \<br>
-  } while (false)<br>
-<br>
 #include "sanitizer_common/sanitizer_<wbr>platform_interceptors.h"<br>
 #include "sanitizer_common/sanitizer_<wbr>common_interceptors.inc"<br>
<br>
@@ -1518,6 +1538,8 @@ void InitializeInterceptors() {<br>
   INTERCEPT_FUNCTION(stpcpy);  // NOLINT<br>
   INTERCEPT_FUNCTION(strdup);<br>
   MSAN_MAYBE_INTERCEPT___STRDUP;<br>
+  INTERCEPT_FUNCTION(strndup);<br>
+  MSAN_MAYBE_INTERCEPT___<wbr>STRNDUP;<br>
   INTERCEPT_FUNCTION(strncpy);  // NOLINT<br>
   INTERCEPT_FUNCTION(gcvt);<br>
   INTERCEPT_FUNCTION(strcat);  // NOLINT<br>
<br>
Modified: compiler-rt/trunk/lib/msan/<wbr>tests/msan_test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>msan/tests/msan_test.cc?rev=<wbr>303339&r1=303338&r2=303339&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/msan/<wbr>tests/msan_test.cc (original)<br>
+++ compiler-rt/trunk/lib/msan/<wbr>tests/msan_test.cc Thu May 18 04:31:37 2017<br>
@@ -1581,8 +1581,7 @@ TEST(MemorySanitizer, strdup) {<br>
 TEST(MemorySanitizer, strndup) {<br>
   char buf[4] = "abc";<br>
   __msan_poison(buf + 2, sizeof(*buf));<br>
-  char *x;<br>
-  EXPECT_UMR(x = strndup(buf, 3));<br>
+  char *x = strndup(buf, 3);<br>
   EXPECT_NOT_POISONED(x[0]);<br>
   EXPECT_NOT_POISONED(x[1]);<br>
   EXPECT_POISONED(x[2]);<br>
@@ -1594,8 +1593,7 @@ TEST(MemorySanitizer, strndup_short) {<br>
   char buf[4] = "abc";<br>
   __msan_poison(buf + 1, sizeof(*buf));<br>
   __msan_poison(buf + 2, sizeof(*buf));<br>
-  char *x;<br>
-  EXPECT_UMR(x = strndup(buf, 2));<br>
+  char *x = strndup(buf, 2);<br>
   EXPECT_NOT_POISONED(x[0]);<br>
   EXPECT_POISONED(x[1]);<br>
   EXPECT_NOT_POISONED(x[2]);<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>common_interceptors.inc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_common_interceptors.inc?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>common_interceptors.inc?rev=<wbr>303339&r1=303338&r2=303339&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>common_interceptors.inc (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>common_interceptors.inc Thu May 18 04:31:37 2017<br>
@@ -34,8 +34,6 @@<br>
 //   COMMON_INTERCEPTOR_MEMSET_IMPL<br>
 //   COMMON_INTERCEPTOR_MEMMOVE_<wbr>IMPL<br>
 //   COMMON_INTERCEPTOR_MEMCPY_IMPL<br>
-//   COMMON_INTERCEPTOR_COPY_STRING<br>
-//   COMMON_INTERCEPTOR_STRNDUP_<wbr>IMPL<br>
 //===-------------------------<wbr>------------------------------<wbr>---------------===//<br>
<br>
 #include "interception/interception.h"<br>
@@ -219,25 +217,6 @@ bool PlatformHasDifferentMemcpyAndM<wbr>emmov<br>
   }<br>
 #endif<br>
<br>
-#ifndef COMMON_INTERCEPTOR_COPY_STRING<br>
-#define COMMON_INTERCEPTOR_COPY_<wbr>STRING(ctx, to, from, size) {}<br>
-#endif<br>
-<br>
-#ifndef COMMON_INTERCEPTOR_STRNDUP_<wbr>IMPL<br>
-#define COMMON_INTERCEPTOR_STRNDUP_<wbr>IMPL(ctx, s, size)                          \<br>
-  COMMON_INTERCEPTOR_ENTER(ctx, strndup, s, size);                             \<br>
-  uptr from_length = internal_strnlen(s, size);                                \<br>
-  uptr copy_length = Min(size, from_length);                                   \<br>
-  char *new_mem = (char *)WRAP(malloc)(copy_length + 1);                       \<br>
-  if (common_flags()->intercept_<wbr>strndup) {                                     \<br>
-    COMMON_INTERCEPTOR_READ_RANGE(<wbr>ctx, s, copy_length + 1);                    \<br>
-  }                                                                            \<br>
-  COMMON_INTERCEPTOR_COPY_<wbr>STRING(ctx, new_mem, s, copy_length);                \<br>
-  internal_memcpy(new_mem, s, copy_length);                                    \<br>
-  new_mem[copy_length] = '\0';                                                 \<br>
-  return new_mem;<br>
-#endif<br>
-<br>
 struct FileMetadata {<br>
   // For open_memstream().<br>
   char **addr;<br>
@@ -321,26 +300,6 @@ INTERCEPTOR(SIZE_T, strnlen, const char<br>
 #define INIT_STRNLEN<br>
 #endif<br>
<br>
-#if SANITIZER_INTERCEPT_STRNDUP<br>
-INTERCEPTOR(char*, strndup, const char *s, uptr size) {<br>
-  void *ctx;<br>
-  COMMON_INTERCEPTOR_STRNDUP_<wbr>IMPL(ctx, s, size);<br>
-}<br>
-#define INIT_STRNDUP COMMON_INTERCEPT_FUNCTION(<wbr>strndup)<br>
-#else<br>
-#define INIT_STRNDUP<br>
-#endif // SANITIZER_INTERCEPT_STRNDUP<br>
-<br>
-#if SANITIZER_INTERCEPT___STRNDUP<br>
-INTERCEPTOR(char*, __strndup, const char *s, uptr size) {<br>
-  void *ctx;<br>
-  COMMON_INTERCEPTOR_STRNDUP_<wbr>IMPL(ctx, s, size);<br>
-}<br>
-#define INIT___STRNDUP COMMON_INTERCEPT_FUNCTION(__<wbr>strndup)<br>
-#else<br>
-#define INIT___STRNDUP<br>
-#endif // SANITIZER_INTERCEPT___STRNDUP<br>
-<br>
 #if SANITIZER_INTERCEPT_TEXTDOMAIN<br>
 INTERCEPTOR(char*, textdomain, const char *domainname) {<br>
   void *ctx;<br>
@@ -6204,8 +6163,6 @@ static void InitializeCommonInterceptors<br>
   INIT_TEXTDOMAIN;<br>
   INIT_STRLEN;<br>
   INIT_STRNLEN;<br>
-  INIT_STRNDUP;<br>
-  INIT___STRNDUP;<br>
   INIT_STRCMP;<br>
   INIT_STRNCMP;<br>
   INIT_STRCASECMP;<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_flags.inc?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc?rev=303339&r1=<wbr>303338&r2=303339&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>flags.inc Thu May 18 04:31:37 2017<br>
@@ -195,9 +195,6 @@ COMMON_FLAG(bool, intercept_strpbrk, tru<br>
 COMMON_FLAG(bool, intercept_strlen, true,<br>
             "If set, uses custom wrappers for strlen and strnlen functions "<br>
             "to find more errors.")<br>
-COMMON_FLAG(bool, intercept_strndup, true,<br>
-            "If set, uses custom wrappers for strndup functions "<br>
-            "to find more errors.")<br>
 COMMON_FLAG(bool, intercept_strchr, true,<br>
             "If set, uses custom wrappers for strchr, strchrnul, and strrchr "<br>
             "functions to find more errors.")<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>platform_interceptors.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_platform_interceptors.h?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>platform_interceptors.h?rev=<wbr>303339&r1=303338&r2=303339&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>platform_interceptors.h (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/sanitizer_<wbr>platform_interceptors.h Thu May 18 04:31:37 2017<br>
@@ -25,12 +25,6 @@<br>
 # define SI_NOT_WINDOWS 0<br>
 #endif<br>
<br>
-#if SANITIZER_POSIX<br>
-# define SI_POSIX 1<br>
-#else<br>
-# define SI_POSIX 0<br>
-#endif<br>
-<br>
 #if SANITIZER_LINUX && !SANITIZER_ANDROID<br>
 # define SI_LINUX_NOT_ANDROID 1<br>
 #else<br>
@@ -75,12 +69,6 @@<br>
 # define SI_UNIX_NOT_MAC 0<br>
 #endif<br>
<br>
-#if SANITIZER_LINUX && !SANITIZER_FREEBSD<br>
-# define SI_LINUX_NOT_FREEBSD 1<br>
-# else<br>
-# define SI_LINUX_NOT_FREEBSD 0<br>
-#endif<br>
-<br>
 #define SANITIZER_INTERCEPT_STRLEN 1<br>
 #define SANITIZER_INTERCEPT_STRNLEN SI_NOT_MAC<br>
 #define SANITIZER_INTERCEPT_STRCMP 1<br>
@@ -98,9 +86,6 @@<br>
 #define SANITIZER_INTERCEPT_MEMMOVE 1<br>
 #define SANITIZER_INTERCEPT_MEMCPY 1<br>
 #define SANITIZER_INTERCEPT_MEMCMP 1<br>
-// temporary disabled until r302781 is reverted or fixed.<br>
-#define SANITIZER_INTERCEPT_STRNDUP (0 && SI_POSIX)<br>
-#define SANITIZER_INTERCEPT___STRNDUP (0 && SI_LINUX_NOT_FREEBSD)<br>
 #if defined(__ENVIRONMENT_MAC_OS_<wbr>X_VERSION_MIN_REQUIRED__) && \<br>
     __ENVIRONMENT_MAC_OS_X_<wbr>VERSION_MIN_REQUIRED__ < 1070<br>
 # define SI_MAC_DEPLOYMENT_BELOW_10_7 1<br>
<br>
Modified: compiler-rt/trunk/lib/<wbr>sanitizer_common/tests/<wbr>sanitizer_test_utils.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/tests/sanitizer_test_utils.h?rev=303339&r1=303338&r2=303339&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/lib/<wbr>sanitizer_common/tests/<wbr>sanitizer_test_utils.h?rev=<wbr>303339&r1=303338&r2=303339&<wbr>view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/<wbr>sanitizer_common/tests/<wbr>sanitizer_test_utils.h (original)<br>
+++ compiler-rt/trunk/lib/<wbr>sanitizer_common/tests/<wbr>sanitizer_test_utils.h Thu May 18 04:31:37 2017<br>
@@ -124,11 +124,4 @@ static inline uint32_t my_rand() {<br>
 # define SANITIZER_TEST_HAS_PRINTF_L 0<br>
 #endif<br>
<br>
-#if !defined(_MSC_VER)<br>
-// Test temporary disabled until r302781 is reverted or fixed.<br>
-# define SANITIZER_TEST_HAS_STRNDUP 0<br>
-#else<br>
-# define SANITIZER_TEST_HAS_STRNDUP 0<br>
-#endif<br>
-<br>
 #endif  // SANITIZER_TEST_UTILS_H<br>
<br>
Removed: compiler-rt/trunk/test/asan/<wbr>TestCases/Posix/strndup_oob_<wbr>test.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Posix/strndup_oob_test.cc?rev=303338&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/asan/TestCases/Posix/<wbr>strndup_oob_test.cc?rev=<wbr>303338&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/asan/<wbr>TestCases/Posix/strndup_oob_<wbr>test.cc (original)<br>
+++ compiler-rt/trunk/test/asan/<wbr>TestCases/Posix/strndup_oob_<wbr>test.cc (removed)<br>
@@ -1,28 +0,0 @@<br>
-// RUN: echo DISABLED<br>
-// DISABLED: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s<br>
-// DISABLED: %clangxx_asan -O1 %s -o %t && not %run %t 2>&1 | FileCheck %s<br>
-// DISABLED: %clangxx_asan -O2 %s -o %t && not %run %t 2>&1 | FileCheck %s<br>
-// DISABLED: %clangxx_asan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s<br>
-<br>
-// When built as C on Linux, strndup is transformed to __strndup.<br>
-// DISABLED: %clangxx_asan -O3 -xc %s -o %t && not %run %t 2>&1 | FileCheck %s<br>
-<br>
-// Unwind problem on arm: "main" is missing from the allocation stack trace.<br>
-// UNSUPPORTED: win32,s390,armv7l-unknown-<wbr>linux-gnueabihf<br>
-<br>
-#include <string.h><br>
-<br>
-char kString[] = "foo";<br>
-<br>
-int main(int argc, char **argv) {<br>
-  char *copy = strndup(kString, 2);<br>
-  int x = copy[2 + argc];  // BOOM<br>
-  // CHECK: AddressSanitizer: heap-buffer-overflow<br>
-  // CHECK: #0 {{.*}}main {{.*}}strndup_oob_test.cc:[[@<wbr>LINE-2]]<br>
-  // CHECK-LABEL: allocated by thread T{{.*}} here:<br>
-  // CHECK: #{{[01]}} {{.*}}strndup<br>
-  // CHECK: #{{.*}}main {{.*}}strndup_oob_test.cc:[[@<wbr>LINE-6]]<br>
-  // CHECK-LABEL: SUMMARY<br>
-  // CHECK: strndup_oob_test.cc:[[@LINE-7]<wbr>]<br>
-  return x;<br>
-}<br>
<br>
Removed: compiler-rt/trunk/test/msan/<wbr>strndup.cc<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/msan/strndup.cc?rev=303338&view=auto" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/compiler-rt/trunk/<wbr>test/msan/strndup.cc?rev=<wbr>303338&view=auto</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/test/msan/<wbr>strndup.cc (original)<br>
+++ compiler-rt/trunk/test/msan/<wbr>strndup.cc (removed)<br>
@@ -1,29 +0,0 @@<br>
-// RUN: echo DISABLED<br>
-// DISABLED: %clangxx_msan %s -o %t && not %run %t 2>&1 | FileCheck --check-prefix=ON %s<br>
-// DISABLED: %clangxx_msan %s -o %t && MSAN_OPTIONS=intercept_<wbr>strndup=0 %run %t 2>&1 | FileCheck --check-prefix=OFF --allow-empty %s<br>
-<br>
-// When built as C on Linux, strndup is transformed to __strndup.<br>
-// DISABLED: %clangxx_msan -O3 -xc %s -o %t && not %run %t 2>&1 | FileCheck --check-prefix=ON %s<br>
-<br>
-// UNSUPPORTED: win32<br>
-<br>
-#include <assert.h><br>
-#include <stdlib.h><br>
-#include <string.h><br>
-#include <sanitizer/msan_interface.h><br>
-<br>
-int main(int argc, char **argv) {<br>
-  char kString[4] = "abc";<br>
-  __msan_poison(kString + 2, 1);<br>
-  char *copy = strndup(kString, 4); // BOOM<br>
-  assert(__msan_test_shadow(<wbr>copy, 4) == 2); // Poisoning is preserved.<br>
-  free(copy);<br>
-  return 0;<br>
-  // ON: Uninitialized bytes in __interceptor_{{(__)?}}strndup at offset 2 inside [{{.*}}, 4)<br>
-  // ON: MemorySanitizer: use-of-uninitialized-value<br>
-  // ON: #0 {{.*}}main {{.*}}strndup.cc:[[@LINE-6]]<br>
-  // ON-LABEL: SUMMARY<br>
-  // ON: {{.*}}strndup.cc:[[@LINE-8]]<br>
-  // OFF-NOT: MemorySanitizer<br>
-}<br>
-<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>