diff options
author | Nico Weber <nicolasweber@gmx.de> | 2019-04-03 23:15:56 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2019-04-03 23:15:56 +0000 |
commit | c7444ddfe5791bff8cfb3369df84669d0af8e800 (patch) | |
tree | 9a4c115c9b3da6561e3ec85c2f258a49937f07d6 /llvm/lib/Demangle | |
parent | c2b872549359704d9af9b693fda47926b2fd1531 (diff) | |
download | bcm5719-llvm-c7444ddfe5791bff8cfb3369df84669d0af8e800.tar.gz bcm5719-llvm-c7444ddfe5791bff8cfb3369df84669d0af8e800.zip |
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
Diffstat (limited to 'llvm/lib/Demangle')
-rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
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); |