[Lldb-commits] [lldb] r362177 - Make CPlusPlusNameParser robust against nullptr StringRefs.

Adrian Prantl via lldb-commits lldb-commits at lists.llvm.org
Thu May 30 17:18:43 PDT 2019


Author: adrian
Date: Thu May 30 17:18:42 2019
New Revision: 362177

URL: http://llvm.org/viewvc/llvm-project?rev=362177&view=rev
Log:
Make CPlusPlusNameParser robust against nullptr StringRefs.

There is likely also an underlying bug in all code that calls
CPlusPlusNameParser with nullptrs, but this patch can also stand for
itself.

rdar://problem/49072829

Modified:
    lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp
    lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp

Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp?rev=362177&r1=362176&r2=362177&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusNameParser.cpp Thu May 30 17:18:42 2019
@@ -640,6 +640,8 @@ static const llvm::StringMap<tok::TokenK
 }
 
 void CPlusPlusNameParser::ExtractTokens() {
+  if (m_text.empty())
+    return;
   clang::Lexer lexer(clang::SourceLocation(), GetLangOptions(), m_text.data(),
                      m_text.data(), m_text.data() + m_text.size());
   const auto &kw_map = GetKeywordsMap();

Modified: lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp?rev=362177&r1=362176&r2=362177&view=diff
==============================================================================
--- lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp (original)
+++ lldb/trunk/unittests/Language/CPlusPlus/CPlusPlusLanguageTest.cpp Thu May 30 17:18:42 2019
@@ -6,6 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 #include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
+#include "Plugins/Language/CPlusPlus/CPlusPlusNameParser.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
 
@@ -192,3 +193,8 @@ TEST(CPlusPlusLanguage, FindAlternateFun
   EXPECT_THAT(FindAlternate("_ZN1A1fEai"), Contains("_ZN1A1fEci"));
   EXPECT_THAT(FindAlternate("_bogus"), IsEmpty());
 }
+
+TEST(CPlusPlusLanguage, CPlusPlusNameParser) {
+  // Don't crash.
+  CPlusPlusNameParser((const char *)nullptr);
+}




More information about the lldb-commits mailing list