summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-09-02 12:04:51 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-09-02 12:04:51 +0000
commitaaac6e206453574d0130f2ae8d743f630d0c0a42 (patch)
treea994ed7b7bb60b9aec04e763630d57ebd15a2cb2
parent41e8153c4a29b28bc7c80d35bc1d43438acdd4e7 (diff)
tsan: do not crash with obscure message if a user passes invalid arguments to malloc/free/memset/etc
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@163092 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/tsan/rtl/tsan_rtl.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/lib/tsan/rtl/tsan_rtl.cc b/lib/tsan/rtl/tsan_rtl.cc
index 962c07a5b..3860073f7 100644
--- a/lib/tsan/rtl/tsan_rtl.cc
+++ b/lib/tsan/rtl/tsan_rtl.cc
@@ -433,9 +433,11 @@ static void MemoryRangeSet(ThreadState *thr, uptr pc, uptr addr, uptr size,
addr += offset;
size -= offset;
}
- CHECK_EQ(addr % 8, 0);
- CHECK(IsAppMem(addr));
- CHECK(IsAppMem(addr + size - 1));
+ DCHECK_EQ(addr % 8, 0);
+ // If a user passes some insane arguments (memset(0)),
+ // let it just crash as usual.
+ if (!IsAppMem(addr) || !IsAppMem(addr + size - 1))
+ return;
(void)thr;
(void)pc;
// Some programs mmap like hundreds of GBs but actually used a small part.