Author: Igor Kudrin Date: 2025-08-05T12:42:38-07:00 New Revision: f8a4f61101bbed236adfeca58e59cac4b95afe15
URL: https://github.com/llvm/llvm-project/commit/f8a4f61101bbed236adfeca58e59cac4b95afe15 DIFF: https://github.com/llvm/llvm-project/commit/f8a4f61101bbed236adfeca58e59cac4b95afe15.diff LOG: [lldb] Avoid a crash after selecting an unknown platform (#151803) `PlatformList::Create()` added an item to the list even when `Platform::Create()` returned `nullptr`. Other methods use these items 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 ") ... ``` Added: Modified: lldb/source/Target/Platform.cpp lldb/unittests/Platform/PlatformTest.cpp Removed: ################################################################################ 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); +} _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits