diff options
author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-09-16 11:03:31 +0000 |
---|---|---|
committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-09-16 11:03:31 +0000 |
commit | effdc7e483708cfa4dc597c21f246c5dbc09daa0 (patch) | |
tree | d24a8dd8d1b4a1ff815ae426f8e82187064010bf /lib/msan/msan_new_delete.cc | |
parent | 1effc056910803fd8213ac940e9d17f3c0160b4b (diff) |
[msan] Fix origin of deallocated memory.
MSan poisons deallocated memory but it used to give it an invalid origin value,
resulting in confusing reports. This change associates deallocation stack trace
with such memory.
Note that MSan does not have quarantine, and use-after-free detection is very
limited.
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@190781 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/msan/msan_new_delete.cc')
-rw-r--r-- | lib/msan/msan_new_delete.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/msan/msan_new_delete.cc b/lib/msan/msan_new_delete.cc index 88d4364f6..17687ddfc 100644 --- a/lib/msan/msan_new_delete.cc +++ b/lib/msan/msan_new_delete.cc @@ -43,7 +43,8 @@ void *operator new(size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; } void *operator new[](size_t size, std::nothrow_t const&) { OPERATOR_NEW_BODY; } #define OPERATOR_DELETE_BODY \ - if (ptr) MsanDeallocate(ptr) + GET_MALLOC_STACK_TRACE; \ + if (ptr) MsanDeallocate(&stack, ptr) void operator delete(void *ptr) { OPERATOR_DELETE_BODY; } void operator delete[](void *ptr) { OPERATOR_DELETE_BODY; } |