summaryrefslogtreecommitdiff
path: root/lib/msan/msan_interceptors.cc
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-11-05 01:24:38 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-11-05 01:24:38 +0000
commit4197fa23ada9682343a15b68dde08c0249db172a (patch)
tree2011b2a78a531903af0ac114fa9ba9a3334d173c /lib/msan/msan_interceptors.cc
parentf7e6f383d9c661ccbcd986fc1478336f57f4ce7c (diff)
downloadcompiler-rt-4197fa23ada9682343a15b68dde08c0249db172a.tar.gz
compiler-rt-4197fa23ada9682343a15b68dde08c0249db172a.tar.bz2
compiler-rt-4197fa23ada9682343a15b68dde08c0249db172a.tar.xz
[msan] Fix a very unfortunate typo in origin copying.
It was causing randomly missing origins. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@194036 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/msan_interceptors.cc')
-rw-r--r--lib/msan/msan_interceptors.cc6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/msan/msan_interceptors.cc b/lib/msan/msan_interceptors.cc
index 0e2db9cb..dd4b43b7 100644
--- a/lib/msan/msan_interceptors.cc
+++ b/lib/msan/msan_interceptors.cc
@@ -1348,7 +1348,7 @@ u32 get_origin_if_poisoned(uptr a, uptr size) {
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 void *src, uptr size) {
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 void *src, uptr size) {
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;
}