]> granicus.if.org Git - llvm/commitdiff
llvm-undname: Fix a crash-on-invalid
authorNico Weber <nicolasweber@gmx.de>
Wed, 3 Apr 2019 23:27:18 +0000 (23:27 +0000)
committerNico Weber <nicolasweber@gmx.de>
Wed, 3 Apr 2019 23:27:18 +0000 (23:27 +0000)
Found by oss-fuzz, fixes issue 13260 on oss-fuzz.

Differential Revision: https://reviews.llvm.org/D60207

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

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

index 653c76e052f509918c8460cd563d4a51fbcfd122..49fa7324ef991edf3b523f4a611398b9960669bd 100644 (file)
@@ -1949,7 +1949,7 @@ ArrayTypeNode *Demangler::demangleArrayType(StringView &MangledName) {
   for (uint64_t I = 0; I < Rank; ++I) {
     uint64_t D = 0;
     std::tie(D, IsNegative) = demangleNumber(MangledName);
-    if (IsNegative) {
+    if (Error || IsNegative) {
       Error = true;
       return nullptr;
     }
index 5c26ca421bfa4a4601327d10b23b5d01d296abd5..7a7d8ee0734018503f84402d76bd7b9c91cfd50b 100644 (file)
@@ -24,3 +24,8 @@
 ; CHECK-EMPTY:
 ; CHECK-NEXT: ??0@
 ; CHECK-NEXT: error: Invalid mangled name
+
+? @@   YC@
+; CHECK-EMPTY:
+; CHECK-NEXT: ? @@   YC@
+; CHECK-NEXT: error: Invalid mangled name