summaryrefslogtreecommitdiffstats
path: root/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2012-07-05 16:18:28 +0000
committerDmitry Vyukov <dvyukov@google.com>2012-07-05 16:18:28 +0000
commit03d32ecd4f5a8061b6a56e512f05f74a4775b228 (patch)
tree4ea38d23a04ffa574bcc85b708695b6f6ad802bf /compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
parent72244b6e4f711566b749e018af4b18feb4c45108 (diff)
downloadbcm5719-llvm-03d32ecd4f5a8061b6a56e512f05f74a4775b228.tar.gz
bcm5719-llvm-03d32ecd4f5a8061b6a56e512f05f74a4775b228.zip
tsan: Go language support
llvm-svn: 159754
Diffstat (limited to 'compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc')
-rw-r--r--compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc b/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
index be2f94c8dd2..816fddf1c5a 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc
@@ -31,13 +31,18 @@ namespace __sanitizer {
const u64 kBlockMagic = 0x6A6CB03ABCEBC041ull;
void *InternalAlloc(uptr size) {
+ if (size + sizeof(u64) < size)
+ return 0;
void *p = LIBC_MALLOC(size + sizeof(u64));
+ if (p == 0)
+ return 0;
((u64*)p)[0] = kBlockMagic;
return (char*)p + sizeof(u64);
}
void InternalFree(void *addr) {
- if (!addr) return;
+ if (addr == 0)
+ return;
addr = (char*)addr - sizeof(u64);
CHECK_EQ(((u64*)addr)[0], kBlockMagic);
((u64*)addr)[0] = 0;
OpenPOWER on IntegriCloud