diff options
author | Erik Pilkington <erik.pilkington@gmail.com> | 2017-08-06 20:46:33 +0000 |
---|---|---|
committer | Erik Pilkington <erik.pilkington@gmail.com> | 2017-08-06 20:46:33 +0000 |
commit | 1137f968e72317fc7bd7b73e9483023367c8a55b (patch) | |
tree | a39a390a41cad128caf54e3488e427e77386c7a6 | |
parent | b90082274531c38eb75bb5d30aac876d338004ea (diff) |
[demangler] Fix another oss-fuzz bug
git-svn-id: https://llvm.org/svn/llvm-project/libcxxabi/trunk@310226 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | src/cxa_demangle.cpp | 2 | ||||
-rw-r--r-- | test/test_demangle.pass.cpp | 1 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/cxa_demangle.cpp b/src/cxa_demangle.cpp index 88990a2..0281b50 100644 --- a/src/cxa_demangle.cpp +++ b/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/test/test_demangle.pass.cpp b/test/test_demangle.pass.cpp index 3b712f0..18bbbba 100644 --- a/test/test_demangle.pass.cpp +++ b/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]); |