diff options
author | Martin Liska <mliska@suse.cz> | 2020-10-16 15:08:52 +0200 |
---|---|---|
committer | Martin Liska <mliska@suse.cz> | 2020-10-21 09:27:08 +0200 |
commit | b69f33f477b9ac38af3c39465600ae74a3554878 (patch) | |
tree | e26e0bdeca203d318709073b3371990986be5d28 /libsanitizer/asan | |
parent | 38aca14a437d9adefe9d7f526aafa53a8e868749 (diff) | |
download | gcc-b69f33f477b9ac38af3c39465600ae74a3554878.zip gcc-b69f33f477b9ac38af3c39465600ae74a3554878.tar.gz gcc-b69f33f477b9ac38af3c39465600ae74a3554878.tar.bz2 |
ASAN: Support detect_invalid_pointer_pairs=1 with detect_stack_use_after_return=1
Do not crash when AsanThread::GetStackVariableShadowStart does not find
a variable for a pointer on a shadow stack.
Cherry-pick from ad2be02a833e56f7fe280797280b219eb3312621.
Differential Revision: https://reviews.llvm.org/D89552
Diffstat (limited to 'libsanitizer/asan')
-rw-r--r-- | libsanitizer/asan/asan_thread.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libsanitizer/asan/asan_thread.cpp b/libsanitizer/asan/asan_thread.cpp index f0df8bd..58cdc29 100644 --- a/libsanitizer/asan/asan_thread.cpp +++ b/libsanitizer/asan/asan_thread.cpp @@ -366,7 +366,9 @@ uptr AsanThread::GetStackVariableShadowStart(uptr addr) { bottom = stack_bottom(); } else if (has_fake_stack()) { bottom = fake_stack()->AddrIsInFakeStack(addr); - CHECK(bottom); + if (bottom == 0) { + return 0; + } } else { return 0; } |