diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2012-07-05 16:18:28 +0000 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2012-07-05 16:18:28 +0000 |
| commit | 03d32ecd4f5a8061b6a56e512f05f74a4775b228 (patch) | |
| tree | 4ea38d23a04ffa574bcc85b708695b6f6ad802bf /compiler-rt/lib/sanitizer_common/sanitizer_allocator.cc | |
| parent | 72244b6e4f711566b749e018af4b18feb4c45108 (diff) | |
| download | bcm5719-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.cc | 7 |
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; |

