https://github.com/clayborg updated https://github.com/llvm/llvm-project/pull/80508
>From c416b6f4c0a00684057947782413b66af4c197f3 Mon Sep 17 00:00:00 2001 From: Greg Clayton <clayb...@gmail.com> Date: Fri, 2 Feb 2024 15:30:40 -0800 Subject: [PATCH] Fix a crasher when using the public API. A user found a crash when they would do code like: (lldb) script >>> target = lldb.SBTarget() >>> lldb.debugger.SetSelectedTarget(target) We were not checking if the target was valid in SBDebugger::SetSelectedTarget(...). --- lldb/source/API/SBDebugger.cpp | 14 +++++++------- lldb/test/API/python_api/target/TestTargetAPI.py | 6 ++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp index fbcf30e67fc1cd..12cbe25a540eba 100644 --- a/lldb/source/API/SBDebugger.cpp +++ b/lldb/source/API/SBDebugger.cpp @@ -1089,9 +1089,9 @@ void SBDebugger::SetSelectedTarget(SBTarget &sb_target) { Log *log = GetLog(LLDBLog::API); TargetSP target_sp(sb_target.GetSP()); - if (m_opaque_sp) { + if (m_opaque_sp && target_sp) m_opaque_sp->GetTargetList().SetSelectedTarget(target_sp); - } + if (log) { SBStream sstr; sb_target.GetDescription(sstr, eDescriptionLevelBrief); @@ -1704,20 +1704,20 @@ SBDebugger::LoadTraceFromFile(SBError &error, void SBDebugger::RequestInterrupt() { LLDB_INSTRUMENT_VA(this); - + if (m_opaque_sp) - m_opaque_sp->RequestInterrupt(); + m_opaque_sp->RequestInterrupt(); } void SBDebugger::CancelInterruptRequest() { LLDB_INSTRUMENT_VA(this); - + if (m_opaque_sp) - m_opaque_sp->CancelInterruptRequest(); + m_opaque_sp->CancelInterruptRequest(); } bool SBDebugger::InterruptRequested() { LLDB_INSTRUMENT_VA(this); - + if (m_opaque_sp) return m_opaque_sp->InterruptRequested(); return false; diff --git a/lldb/test/API/python_api/target/TestTargetAPI.py b/lldb/test/API/python_api/target/TestTargetAPI.py index c8e1904428c8aa..63d34340a8836e 100644 --- a/lldb/test/API/python_api/target/TestTargetAPI.py +++ b/lldb/test/API/python_api/target/TestTargetAPI.py @@ -526,3 +526,9 @@ def test_is_loaded(self): target.IsLoaded(module), "Running the target should " "have loaded its modules.", ) + + @no_debug_info_test + def test_setting_selected_target_with_invalid_target(self): + """Make sure we don't crash when trying to select invalid target.""" + target = lldb.SBTarget() + self.dbg.SetSelectedTarget(target) _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits