OSDN Git Service

llvm-undname: Fix crash on invalid name in a template parameter pointer to member arg
authorNico Weber <nicolasweber@gmx.de>
Thu, 11 Apr 2019 22:23:35 +0000 (22:23 +0000)
committerNico Weber <nicolasweber@gmx.de>
Thu, 11 Apr 2019 22:23:35 +0000 (22:23 +0000)
Found by oss-fuzz.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358234 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Demangle/MicrosoftDemangle.cpp
test/Demangle/invalid-manglings.test

index c649552..194a152 100644 (file)
@@ -2139,6 +2139,8 @@ Demangler::demangleTemplateParameterList(StringView &MangledName) {
       SymbolNode *S = nullptr;
       if (MangledName.startsWith('?')) {
         S = parse(MangledName);
+        if (Error)
+          return nullptr;
         memorizeIdentifier(S->Name->getUnqualifiedIdentifier());
       }
 
index 40bf92d..5d6f316 100644 (file)
@@ -94,3 +94,8 @@
 ; CHECK-EMPTY:
 ; CHECK-NEXT: ??8@8
 ; CHECK-NEXT: error: Invalid mangled name
+
+?B@?$?K$H?
+; CHECK-EMPTY:
+; CHECK-NEXT: ?B@?$?K$H?
+; CHECK-NEXT: error: Invalid mangled name