From: Nico Weber Date: Sun, 14 Apr 2019 23:32:37 +0000 (+0000) Subject: llvm-undname: Fix oss-fuzz-foudn crash-on-invalid with incomplete special table nodes X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9fe9eec3d85d343003b381c2ae41ea70ffe1c6aa;p=llvm llvm-undname: Fix oss-fuzz-foudn crash-on-invalid with incomplete special table nodes git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@358367 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Demangle/MicrosoftDemangle.cpp b/lib/Demangle/MicrosoftDemangle.cpp index 882913a9863..2b41c0037f9 100644 --- a/lib/Demangle/MicrosoftDemangle.cpp +++ b/lib/Demangle/MicrosoftDemangle.cpp @@ -276,6 +276,10 @@ Demangler::demangleSpecialTableSymbolNode(StringView &MangledName, SpecialTableSymbolNode *STSN = Arena.alloc(); STSN->Name = QN; bool IsMember = false; + if (MangledName.empty()) { + Error = true; + return nullptr; + } char Front = MangledName.popFront(); if (Front != '6' && Front != '7') { Error = true; diff --git a/test/Demangle/invalid-manglings.test b/test/Demangle/invalid-manglings.test index eb22d1e0a4c..869d63a274f 100644 --- a/test/Demangle/invalid-manglings.test +++ b/test/Demangle/invalid-manglings.test @@ -119,3 +119,13 @@ ; CHECK-EMPTY: ; CHECK-NEXT: ?foo@?$?_ ; CHECK-NEXT: error: Invalid mangled name + +??_R4 +; CHECK-EMPTY: +; CHECK-NEXT: ??_R4 +; CHECK-NEXT: error: Invalid mangled name + +??_R4foo@@ +; CHECK-EMPTY: +; CHECK-NEXT: ??_R4foo@@ +; CHECK-NEXT: error: Invalid mangled name