From: Nico Weber Date: Wed, 3 Apr 2019 23:27:18 +0000 (+0000) Subject: llvm-undname: Fix a crash-on-invalid X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c8d28c5350ffe2dc071a0dd29fb127bd58b843d3;p=llvm llvm-undname: Fix a crash-on-invalid 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 --- diff --git a/lib/Demangle/MicrosoftDemangle.cpp b/lib/Demangle/MicrosoftDemangle.cpp index 653c76e052f..49fa7324ef9 100644 --- a/lib/Demangle/MicrosoftDemangle.cpp +++ b/lib/Demangle/MicrosoftDemangle.cpp @@ -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; } diff --git a/test/Demangle/invalid-manglings.test b/test/Demangle/invalid-manglings.test index 5c26ca421bf..7a7d8ee0734 100644 --- a/test/Demangle/invalid-manglings.test +++ b/test/Demangle/invalid-manglings.test @@ -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