]> granicus.if.org Git - llvm/commitdiff
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 c649552051ff8726afce79e782a0edc8c7bdcdce..194a152acb8f371ae1bcb7f2ad732373158ce6fd 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 40bf92df3576c8a69118ca69d380364845372a25..5d6f3160a95d61f77a14f08c5e6fe80147f969c4 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