[demangler] Fix another oss-fuzz bug
authorErik Pilkington <erik.pilkington@gmail.com>
Sun, 6 Aug 2017 20:46:33 +0000 (20:46 +0000)
committerErik Pilkington <erik.pilkington@gmail.com>
Sun, 6 Aug 2017 20:46:33 +0000 (20:46 +0000)
llvm-svn: 310226

libcxxabi/src/cxa_demangle.cpp
libcxxabi/test/test_demangle.pass.cpp

index 88990a2..0281b50 100644 (file)
@@ -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();
index 3b712f0..18bbbba 100644 (file)
@@ -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]);