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 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits