summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Demangle
diff options
context:
space:
mode:
authorNico Weber <nicolasweber@gmx.de>2019-04-18 19:30:21 +0000
committerNico Weber <nicolasweber@gmx.de>2019-04-18 19:30:21 +0000
commit502cf4bd19f9aaf4c412de147912cd178fe40e20 (patch)
treee2d30929cc78a11158f24eda10c267d081352350 /llvm/lib/Demangle
parent815a4c902d6da11e02f7e0682eb3e66c7fbdc78a (diff)
downloadbcm5719-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.cpp8
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);
}
OpenPOWER on IntegriCloud