summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2016-09-15 21:02:09 +0000
committerAnna Zaks <ganna@apple.com>2016-09-15 21:02:09 +0000
commitb5baf5bbfbd0552b2942a7d6494a4eda9eee1854 (patch)
treeb2f2e509ac2b977cd6e74346b8c94e3a6fc2c900
parent02aff9fa8f2a6ad9ec5cc2479878755bd52a629e (diff)
[sanitizers] DLAddr Symbolizer should fail if demangle fails
This can case crashes in high verbosity mode when demangling fails. Not including a test case since this is hard to reproduce. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@281656 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/sanitizer_common/sanitizer_symbolizer_mac.cc3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/sanitizer_common/sanitizer_symbolizer_mac.cc b/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
index d591abca1..01f499ba9 100644
--- a/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
+++ b/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
@@ -33,7 +33,8 @@ bool DlAddrSymbolizer::SymbolizePC(uptr addr, SymbolizedStack *stack) {
int result = dladdr((const void *)addr, &info);
if (!result) return false;
const char *demangled = DemangleSwiftAndCXX(info.dli_sname);
- stack->info.function = demangled ? internal_strdup(demangled) : nullptr;
+ if (!demangled) return false;
+ stack->info.function = internal_strdup(demangled);
return true;
}