[compiler-rt] r180101 - [msan] Unpoison the result of posix_memalign.

Evgeniy Stepanov eugeni.stepanov at gmail.com
Tue Apr 23 06:27:36 PDT 2013


Author: eugenis
Date: Tue Apr 23 08:27:36 2013
New Revision: 180101

URL: http://llvm.org/viewvc/llvm-project?rev=180101&view=rev
Log:
[msan] Unpoison the result of posix_memalign.

Modified:
    compiler-rt/trunk/lib/msan/msan_interceptors.cc
    compiler-rt/trunk/lib/msan/tests/msan_test.cc

Modified: compiler-rt/trunk/lib/msan/msan_interceptors.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/msan_interceptors.cc?rev=180101&r1=180100&r2=180101&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Tue Apr 23 08:27:36 2013
@@ -114,8 +114,10 @@ INTERCEPTOR(void *, memset, void *s, int
 INTERCEPTOR(int, posix_memalign, void **memptr, SIZE_T alignment, SIZE_T size) {
   GET_MALLOC_STACK_TRACE;
   CHECK_EQ(alignment & (alignment - 1), 0);
-  *memptr = MsanReallocate(&stack, 0, size, alignment, false);
   CHECK_NE(memptr, 0);
+  *memptr = MsanReallocate(&stack, 0, size, alignment, false);
+  CHECK_NE(*memptr, 0);
+  __msan_unpoison(memptr, sizeof(*memptr));
   return 0;
 }
 

Modified: compiler-rt/trunk/lib/msan/tests/msan_test.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/msan_test.cc?rev=180101&r1=180100&r2=180101&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)
+++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Tue Apr 23 08:27:36 2013
@@ -1627,6 +1627,15 @@ TEST(MemorySanitizer, PreAllocatedStackT
   ASSERT_EQ(0, res);
 }
 
+TEST(MemorySanitizer, posix_memalign) {
+  void *p;
+  EXPECT_POISONED(p);
+  int res = posix_memalign(&p, 4096, 13);
+  ASSERT_EQ(0, res);
+  EXPECT_NOT_POISONED(p);
+  free(p);
+}
+
 TEST(MemorySanitizer, uname) {
   struct utsname u;
   int res = uname(&u);





More information about the llvm-commits mailing list