tsan: Go language support
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@159754 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/sanitizer_common/sanitizer_allocator.cc b/lib/sanitizer_common/sanitizer_allocator.cc
index be2f94c..816fddf 100644
--- a/lib/sanitizer_common/sanitizer_allocator.cc
+++ b/lib/sanitizer_common/sanitizer_allocator.cc
@@ -31,13 +31,18 @@
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;