From c7444ddfe5791bff8cfb3369df84669d0af8e800 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 3 Apr 2019 23:15:56 +0000 Subject: llvm-undname: Fix a crash-on-invalid Found by oss-fuzz, fixes issues 12435 and 12438 on oss-fuzz. Differential Revision: https://reviews.llvm.org/D60202 llvm-svn: 357646 --- llvm/lib/Demangle/MicrosoftDemangle.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'llvm/lib') diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index c75175c9f9c..b8e39c41527 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -1276,12 +1276,16 @@ StringLiteralError: return nullptr; } +// Returns MangledName's prefix before the first '@', or an error if +// MangledName contains no '@' or the prefix has length 0. StringView Demangler::demangleSimpleString(StringView &MangledName, bool Memorize) { StringView S; for (size_t i = 0; i < MangledName.size(); ++i) { if (MangledName[i] != '@') continue; + if (i == 0) + break; S = MangledName.substr(0, i); MangledName = MangledName.dropFront(i + 1); -- cgit v1.2.3