diff options
| author | Nico Weber <nicolasweber@gmx.de> | 2019-04-03 23:27:18 +0000 |
|---|---|---|
| committer | Nico Weber <nicolasweber@gmx.de> | 2019-04-03 23:27:18 +0000 |
| commit | 1672581e96819a4e16860145eb388af993e4ea9e (patch) | |
| tree | 2fe93ea4f9032860e4e5433d5f7316ce6e19e395 /llvm | |
| parent | a9886f8278921a78ba6f9e15395b39e74586aba1 (diff) | |
| download | bcm5719-llvm-1672581e96819a4e16860145eb388af993e4ea9e.tar.gz bcm5719-llvm-1672581e96819a4e16860145eb388af993e4ea9e.zip | |
llvm-undname: Fix a crash-on-invalid
Found by oss-fuzz, fixes issue 13260 on oss-fuzz.
Differential Revision: https://reviews.llvm.org/D60207
llvm-svn: 357649
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Demangle/MicrosoftDemangle.cpp | 2 | ||||
| -rw-r--r-- | llvm/test/Demangle/invalid-manglings.test | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Demangle/MicrosoftDemangle.cpp b/llvm/lib/Demangle/MicrosoftDemangle.cpp index 653c76e052f..49fa7324ef9 100644 --- a/llvm/lib/Demangle/MicrosoftDemangle.cpp +++ b/llvm/lib/Demangle/MicrosoftDemangle.cpp @@ -1949,7 +1949,7 @@ ArrayTypeNode *Demangler::demangleArrayType(StringView &MangledName) { for (uint64_t I = 0; I < Rank; ++I) { uint64_t D = 0; std::tie(D, IsNegative) = demangleNumber(MangledName); - if (IsNegative) { + if (Error || IsNegative) { Error = true; return nullptr; } diff --git a/llvm/test/Demangle/invalid-manglings.test b/llvm/test/Demangle/invalid-manglings.test index 5c26ca421bf..7a7d8ee0734 100644 --- a/llvm/test/Demangle/invalid-manglings.test +++ b/llvm/test/Demangle/invalid-manglings.test @@ -24,3 +24,8 @@ ; CHECK-EMPTY: ; CHECK-NEXT: ??0@ ; CHECK-NEXT: error: Invalid mangled name + +? @@ YC@ +; CHECK-EMPTY: +; CHECK-NEXT: ? @@ YC@ +; CHECK-NEXT: error: Invalid mangled name |

