From 39dc8800c17bbe41a25da339d754f1a5bfcc026e Mon Sep 17 00:00:00 2001 From: Erik Pilkington Date: Sun, 6 Aug 2017 20:46:33 +0000 Subject: [PATCH] [demangler] Fix another oss-fuzz bug llvm-svn: 310226 --- libcxxabi/src/cxa_demangle.cpp | 2 +- libcxxabi/test/test_demangle.pass.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/libcxxabi/src/cxa_demangle.cpp b/libcxxabi/src/cxa_demangle.cpp index 88990a2..0281b50 100644 --- a/libcxxabi/src/cxa_demangle.cpp +++ b/libcxxabi/src/cxa_demangle.cpp @@ -2896,7 +2896,7 @@ parse_new_expr(const char* first, const char* last, Db& db) return first; init_list = db.popTrailingNodeArray(init_list_begin); } - if (*t != 'E') + if (*t != 'E' || db.names.empty()) return first; auto type = db.names.back(); db.names.pop_back(); diff --git a/libcxxabi/test/test_demangle.pass.cpp b/libcxxabi/test/test_demangle.pass.cpp index 3b712f0..18bbbba 100644 --- a/libcxxabi/test/test_demangle.pass.cpp +++ b/libcxxabi/test/test_demangle.pass.cpp @@ -29677,6 +29677,7 @@ const char* invalid_cases[] = "FSiIJEENT_IoE ", "ZTVSiIZTVSiIZTVSiIZTVSiINIJEET_T_T_T_T_ ", "_ZSiIJEvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvttvvvvvvET_v", + "Ana_T_E_T_IJEffffffffffffffersfffffrsrsffffffbgE", }; const unsigned NI = sizeof(invalid_cases) / sizeof(invalid_cases[0]); -- 2.7.4