[llvm] r358707 - llvm-undname: Fix two asserts-on-invalid
Nico Weber via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 18 12:30:21 PDT 2019
Author: nico
Date: Thu Apr 18 12:30:21 2019
New Revision: 358707
URL: http://llvm.org/viewvc/llvm-project?rev=358707&view=rev
Log:
llvm-undname: Fix two asserts-on-invalid
Modified:
llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp
llvm/trunk/test/Demangle/invalid-manglings.test
Modified: llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp?rev=358707&r1=358706&r2=358707&view=diff
==============================================================================
--- llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp (original)
+++ llvm/trunk/lib/Demangle/MicrosoftDemangle.cpp Thu Apr 18 12:30:21 2019
@@ -838,7 +838,7 @@ VariableSymbolNode *Demangler::demangleV
// <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(StringV
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(StringV
unsigned BytesDecoded = 0;
while (!MangledName.consumeFront('@')) {
- assert(StringByteSize >= 1);
+ if (StringByteSize < 1)
+ goto StringLiteralError;
StringBytes[BytesDecoded++] = demangleCharLiteral(MangledName);
}
Modified: llvm/trunk/test/Demangle/invalid-manglings.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Demangle/invalid-manglings.test?rev=358707&r1=358706&r2=358707&view=diff
==============================================================================
--- llvm/trunk/test/Demangle/invalid-manglings.test (original)
+++ llvm/trunk/test/Demangle/invalid-manglings.test Thu Apr 18 12:30:21 2019
@@ -139,3 +139,13 @@
; CHECK-EMPTY:
; CHECK-NEXT: ?foo@?$?0H@
; CHECK-NEXT: error: Invalid mangled name
+
+??_C at _0A@01234567 at a
+; CHECK-EMPTY:
+; CHECK-NEXT: ??_C at _0A@01234567 at a
+; CHECK-NEXT: error: Invalid mangled name
+
+??_C at _1A@01234567 at a
+; CHECK-EMPTY:
+; CHECK-NEXT: ??_C at _1A@01234567 at a
+; CHECK-NEXT: error: Invalid mangled name
More information about the llvm-commits
mailing list