[compiler-rt] r194036 - [msan] Fix a very unfortunate typo in origin copying.

Evgeniy Stepanov eugeni.stepanov at gmail.com
Mon Nov 4 17:24:38 PST 2013


Author: eugenis
Date: Mon Nov  4 19:24:38 2013
New Revision: 194036

URL: http://llvm.org/viewvc/llvm-project?rev=194036&view=rev
Log:
[msan] Fix a very unfortunate typo in origin copying.

It was causing randomly missing origins.

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=194036&r1=194035&r2=194036&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/msan_interceptors.cc (original)
+++ compiler-rt/trunk/lib/msan/msan_interceptors.cc Mon Nov  4 19:24:38 2013
@@ -1348,7 +1348,7 @@ u32 get_origin_if_poisoned(uptr a, uptr
   unsigned char *s = (unsigned char *)MEM_TO_SHADOW(a);
   for (uptr i = 0; i < size; ++i)
     if (s[i])
-      return *(uptr *)SHADOW_TO_ORIGIN((s + i) & ~3UL);
+      return *(u32 *)SHADOW_TO_ORIGIN((s + i) & ~3UL);
   return 0;
 }
 
@@ -1361,7 +1361,7 @@ void __msan_copy_origin(void *dst, const
   if (beg < d) {
     u32 o = get_origin_if_poisoned(beg, d - beg);
     if (o)
-      *(uptr *)MEM_TO_ORIGIN(beg) = o;
+      *(u32 *)MEM_TO_ORIGIN(beg) = o;
     beg += 4;
   }
 
@@ -1370,7 +1370,7 @@ void __msan_copy_origin(void *dst, const
   if (end > d + size) {
     u32 o = get_origin_if_poisoned(d + size, end - d - size);
     if (o)
-      *(uptr *)MEM_TO_ORIGIN(end - 4) = o;
+      *(u32 *)MEM_TO_ORIGIN(end - 4) = o;
     end -= 4;
   }
 

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=194036&r1=194035&r2=194036&view=diff
==============================================================================
--- compiler-rt/trunk/lib/msan/tests/msan_test.cc (original)
+++ compiler-rt/trunk/lib/msan/tests/msan_test.cc Mon Nov  4 19:24:38 2013
@@ -1300,8 +1300,8 @@ void TestUnalignedMemcpy(int left, int r
 }
 
 TEST(MemorySanitizer, memcpy_unaligned) {
-  for (int i = 0; i < 4; ++i) {
-    for (int j = 0; j < 4; ++j) {
+  for (int i = 0; i < 10; ++i) {
+    for (int j = 0; j < 10; ++j) {
       TestUnalignedMemcpy(i, j, true);
       TestUnalignedMemcpy(i, j, false);
     }





More information about the llvm-commits mailing list