diff options
author | Nico Weber <nicolasweber@gmx.de> | 2019-04-18 19:30:21 +0000 |
---|---|---|
committer | Nico Weber <nicolasweber@gmx.de> | 2019-04-18 19:30:21 +0000 |
commit | 502cf4bd19f9aaf4c412de147912cd178fe40e20 (patch) | |
tree | e2d30929cc78a11158f24eda10c267d081352350 /llvm/lib/Demangle | |
parent | 815a4c902d6da11e02f7e0682eb3e66c7fbdc78a (diff) | |
download | bcm5719-llvm-502cf4bd19f9aaf4c412de147912cd178fe40e20.tar.gz bcm5719-llvm-502cf4bd19f9aaf4c412de147912cd178fe40e20.zip |
llvm-undname: Fix two asserts-on-invalid
llvm-svn: 358707
Diffstat (limited to 'llvm/lib/Demangle')
-rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index cd71e7294df..13227381743 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -838,7 +838,7 @@ VariableSymbolNode *Demangler::demangleVariableEncoding(StringView &MangledName, // <number> ::= [?] <non-negative integer> // // <non-negative integer> ::= <decimal digit> # when 1 <= Number <= 10 -// ::= <hex digit>+ @ # when Numbrer == 0 or >= 10 +// ::= <hex digit>+ @ # when Number == 0 or >= 10 // // <hex-digit> ::= [A-P] # A = 0, B = 1, ... std::pair<uint64_t, bool> Demangler::demangleNumber(StringView &MangledName) { @@ -1269,7 +1269,8 @@ Demangler::demangleStringLiteral(StringView &MangledName) { Result->IsTruncated = true; while (!MangledName.consumeFront('@')) { - assert(StringByteSize >= 2); + if (StringByteSize < 2) + goto StringLiteralError; wchar_t W = demangleWcharLiteral(MangledName); if (StringByteSize != 2 || Result->IsTruncated) outputEscapedChar(OS, W); @@ -1285,7 +1286,8 @@ Demangler::demangleStringLiteral(StringView &MangledName) { unsigned BytesDecoded = 0; while (!MangledName.consumeFront('@')) { - assert(StringByteSize >= 1); + if (StringByteSize < 1) + goto StringLiteralError; StringBytes[BytesDecoded++] = demangleCharLiteral(MangledName); } |