[Lldb-commits] [lldb] Fix a crasher when using the public API. (PR #80508)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Feb 2 15:32:46 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Greg Clayton (clayborg)
<details>
<summary>Changes</summary>
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(...).
---
Full diff: https://github.com/llvm/llvm-project/pull/80508.diff
2 Files Affected:
- (modified) lldb/source/API/SBDebugger.cpp (+7-7)
- (modified) lldb/test/API/python_api/target/TestTargetAPI.py (+6)
``````````diff
diff --git a/lldb/source/API/SBDebugger.cpp b/lldb/source/API/SBDebugger.cpp
index fbcf30e67fc1c..12cbe25a540eb 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 c8e1904428c8a..63d34340a8836 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)
``````````
</details>
https://github.com/llvm/llvm-project/pull/80508
More information about the lldb-commits
mailing list