forked from OSchip/llvm-project
![]() ucrtbase.dll appears to be built with some kind of cross-module inlining, because there are calls to imported Heap* routines sprinkled throughout the code. This inlining defeats our attempts to hotpatch malloc, _malloc_base, and related functions. Failing to intercept an allocation or deallocation results in a crash when the program attempts to deallocate or reallocate memory with the wrong allocator. This change patches the IAT of ucrtbase.dll to replace the addresses of the imported Heap* functions with implementations provided by ASan. We don't globally intercept the win32 Heap* functions because they are typically used by system DLLs that run before ASan initializes. Eventually, we may want to intercept them, but for now I think this is the minimal change that will keep ASan stable. Reviewers: samsonov Differential Revision: http://reviews.llvm.org/D18413 llvm-svn: 264327 |
||
---|---|---|
.. | ||
.clang-format | ||
CMakeLists.txt | ||
interception.h | ||
interception_linux.cc | ||
interception_linux.h | ||
interception_mac.cc | ||
interception_mac.h | ||
interception_type_test.cc | ||
interception_win.cc | ||
interception_win.h |