From 6700f4b9fe6321ef704efa4890af5bc351a124f0 Mon Sep 17 00:00:00 2001 From: shafik Date: Wed, 29 Jul 2020 13:29:16 -0700 Subject: [PATCH] [LLDB] Add checks for ValueObjectSP in Cocoa summary providers We saw a crash recently (rdar://problem/65276489) that looks related to an invalid ValueObjectSP in a summary providers in Cocoa.cpp e.g. NSBundleSummaryProvider(...). This adds checks before we use them usually by calling NSStringSummaryProvider. Differential Revision: https://reviews.llvm.org/D84272 --- lldb/source/Plugins/Language/ObjC/Cocoa.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lldb/source/Plugins/Language/ObjC/Cocoa.cpp b/lldb/source/Plugins/Language/ObjC/Cocoa.cpp index 648fc4a..ca4f733 100644 --- a/lldb/source/Plugins/Language/ObjC/Cocoa.cpp +++ b/lldb/source/Plugins/Language/ObjC/Cocoa.cpp @@ -72,6 +72,9 @@ bool lldb_private::formatters::NSBundleSummaryProvider( valobj.GetCompilerType().GetBasicTypeFromAST(lldb::eBasicTypeObjCID), true)); + if (!text) + return false; + StreamString summary_stream; bool was_nsstring_ok = NSStringSummaryProvider(*text, summary_stream, options); @@ -117,6 +120,10 @@ bool lldb_private::formatters::NSTimeZoneSummaryProvider( uint64_t offset = ptr_size; ValueObjectSP text(valobj.GetSyntheticChildAtOffset( offset, valobj.GetCompilerType(), true)); + + if (!text) + return false; + StreamString summary_stream; bool was_nsstring_ok = NSStringSummaryProvider(*text, summary_stream, options); @@ -162,6 +169,10 @@ bool lldb_private::formatters::NSNotificationSummaryProvider( uint64_t offset = ptr_size; ValueObjectSP text(valobj.GetSyntheticChildAtOffset( offset, valobj.GetCompilerType(), true)); + + if (!text) + return false; + StreamString summary_stream; bool was_nsstring_ok = NSStringSummaryProvider(*text, summary_stream, options); -- 2.7.4