Author: Michael Buch
Date: 2024-06-12T09:34:12+01:00
New Revision: 860f0b542ae32c507959201146242cd716222041

URL: 
https://github.com/llvm/llvm-project/commit/860f0b542ae32c507959201146242cd716222041
DIFF: 
https://github.com/llvm/llvm-project/commit/860f0b542ae32c507959201146242cd716222041.diff

LOG: [lldb][ConstString] Prevent GetString from constructing a std::string with 
a nullptr (#95175)

This patch prevents passing a `nullptr` to the `std::string` constructor
in `GetString`. This prevents UB arising from calling `GetString` on a
default-constructed `ConstString`.

Added: 
    

Modified: 
    lldb/include/lldb/Utility/ConstString.h
    lldb/unittests/Utility/ConstStringTest.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/include/lldb/Utility/ConstString.h 
b/lldb/include/lldb/Utility/ConstString.h
index f7f7ec7605eba..692ecb63bd763 100644
--- a/lldb/include/lldb/Utility/ConstString.h
+++ b/lldb/include/lldb/Utility/ConstString.h
@@ -199,7 +199,9 @@ class ConstString {
   }
 
   /// Get the string value as a std::string
-  std::string GetString() const { return std::string(m_string, GetLength()); }
+  std::string GetString() const {
+    return std::string(AsCString(""), GetLength());
+  }
 
   /// Get the string value as a C string.
   ///

diff  --git a/lldb/unittests/Utility/ConstStringTest.cpp 
b/lldb/unittests/Utility/ConstStringTest.cpp
index 716f2d8d6c804..7018248991b6e 100644
--- a/lldb/unittests/Utility/ConstStringTest.cpp
+++ b/lldb/unittests/Utility/ConstStringTest.cpp
@@ -88,6 +88,7 @@ TEST(ConstStringTest, NullAndEmptyStates) {
   EXPECT_TRUE(!null);
   EXPECT_TRUE(null.IsEmpty());
   EXPECT_TRUE(null.IsNull());
+  EXPECT_TRUE(null.GetString().empty());
 }
 
 TEST(ConstStringTest, CompareConstString) {


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to