From: Nico Weber Date: Thu, 11 Apr 2019 22:59:25 +0000 (+0000) Subject: llvm-undname: Don't crash on incomplete enum tag manglings X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=54ee04c709747950609d824700f4201ffc6a5846;p=llvm llvm-undname: Don't crash on incomplete enum tag manglings Found by inspection. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358238 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Demangle/MicrosoftDemangle.cpp b/lib/Demangle/MicrosoftDemangle.cpp index f45df9413d7..c4559ccb5e2 100644 --- a/lib/Demangle/MicrosoftDemangle.cpp +++ b/lib/Demangle/MicrosoftDemangle.cpp @@ -1907,7 +1907,7 @@ TagTypeNode *Demangler::demangleClassType(StringView &MangledName) { TT = Arena.alloc(TagKind::Class); break; case 'W': - if (MangledName.popFront() != '4') { + if (!MangledName.consumeFront('4')) { Error = true; return nullptr; } diff --git a/test/Demangle/invalid-manglings.test b/test/Demangle/invalid-manglings.test index 4c155b765a4..839218ad101 100644 --- a/test/Demangle/invalid-manglings.test +++ b/test/Demangle/invalid-manglings.test @@ -104,3 +104,8 @@ ; CHECK-EMPTY: ; CHECK-NEXT: ??C@$ ; CHECK-NEXT: error: Invalid mangled name + +?x@@3PAW +; CHECK-EMPTY: +; CHECK-NEXT: ?x@@3PAW +; CHECK-NEXT: error: Invalid mangled name