[Lldb-commits] [lldb] [lldb] Avoid a crash after selecting an unknown platform (PR #151803)
via lldb-commits
lldb-commits at lists.llvm.org
Fri Aug 1 23:53:42 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lldb
Author: Igor Kudrin (igorkudrin)
<details>
<summary>Changes</summary>
`PlatformList::Create()` added an item in the list even if `Platform::Create()` returned `nullptr`. Other methods use items of the list without checking, which can lead to a crash. For example:
```
> lldb
(lldb) platform select unknown
error: unable to find a plug-in for the platform named "unknown"
(lldb) file a.out-arm64
PLEASE submit a bug report to...
Stack dump:
0. Program arguments: lldb
1. HandleCommand(command = "file a.out-arm64 ")
...
```
---
Full diff: https://github.com/llvm/llvm-project/pull/151803.diff
2 Files Affected:
- (modified) lldb/source/Target/Platform.cpp (+2-1)
- (modified) lldb/unittests/Platform/PlatformTest.cpp (+6)
``````````diff
diff --git a/lldb/source/Target/Platform.cpp b/lldb/source/Target/Platform.cpp
index e9d9c8f0976b6..8681adaf5ea76 100644
--- a/lldb/source/Target/Platform.cpp
+++ b/lldb/source/Target/Platform.cpp
@@ -2234,7 +2234,8 @@ PlatformSP PlatformList::GetOrCreate(llvm::ArrayRef<ArchSpec> archs,
PlatformSP PlatformList::Create(llvm::StringRef name) {
std::lock_guard<std::recursive_mutex> guard(m_mutex);
PlatformSP platform_sp = Platform::Create(name);
- m_platforms.push_back(platform_sp);
+ if (platform_sp)
+ m_platforms.push_back(platform_sp);
return platform_sp;
}
diff --git a/lldb/unittests/Platform/PlatformTest.cpp b/lldb/unittests/Platform/PlatformTest.cpp
index 8ab223ea2cd57..6299197791fc4 100644
--- a/lldb/unittests/Platform/PlatformTest.cpp
+++ b/lldb/unittests/Platform/PlatformTest.cpp
@@ -157,3 +157,9 @@ TEST_F(PlatformTest, GetPlatformForArchitecturesCandidates) {
PlatformThumb::Terminate();
}
+
+TEST_F(PlatformTest, CreateUnknown) {
+ SetHostPlatform(std::make_shared<PlatformIntel>());
+ ASSERT_EQ(list.Create("unknown-platform-name"), nullptr);
+ ASSERT_EQ(list.GetOrCreate("dummy"), nullptr);
+}
``````````
</details>
https://github.com/llvm/llvm-project/pull/151803
More information about the lldb-commits
mailing list