aboutsummaryrefslogtreecommitdiff
path: root/libsanitizer
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2020-10-16 15:08:52 +0200
committerMartin Liska <mliska@suse.cz>2020-10-21 09:27:08 +0200
commitb69f33f477b9ac38af3c39465600ae74a3554878 (patch)
treee26e0bdeca203d318709073b3371990986be5d28 /libsanitizer
parent38aca14a437d9adefe9d7f526aafa53a8e868749 (diff)
downloadgcc-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')
-rw-r--r--libsanitizer/asan/asan_thread.cpp4
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;
}