[libcxxabi] Delay adjustment of pointer to prevent referencing invalid memory.
This patch delays the dereference adjustment until we are sure the thrown type is a pointer type. It is possible the thrown type is not a pointer and is smaller than `sizeof(void*)`. If the thrown type is is smaller than `sizeof(void*)` the deference adjustment will result in a heap buffer overflow.
I audited all the call sites of `can_catch(...)` and there are no places where `adjustedPtr` is used if `can_catch(...)` returns false. For this reason the patch should not introduce any functionality change.
This patch fixes the following tests when using ASAN:
Reviewers: danalbert, jroelofs, mclow.lists
Reviewed By: mclow.lists
Differential Revision: http://reviews.llvm.org/D6353
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@222674 91177308-0d34-0410-b5e6-96231b3b80d8
1 file changed