d-demangle.c (dlang_parse_assocarray): Correctly handle error result.
authorBen L <bobsayshilol@live.co.uk>
Tue, 30 Apr 2019 14:39:14 +0000 (14:39 +0000)
committerJeff Law <law@gcc.gnu.org>
Tue, 30 Apr 2019 14:39:14 +0000 (08:39 -0600)
     * d-demangle.c (dlang_parse_assocarray): Correctly handle error result.
     * testsuite/d-demangle-expected: Add testcase.

From-SVN: r270700

libiberty/ChangeLog
libiberty/d-demangle.c
libiberty/testsuite/d-demangle-expected

index 104f0e8b20c3846f15a6c34aaace944b27f0a6fc..0fac65bb153421ce761bec61cefb74b75881024b 100644 (file)
@@ -1,5 +1,8 @@
 2019-04-30  Ben L  <bobsayshilol@live.co.uk>
 
+       * d-demangle.c (dlang_parse_assocarray): Correctly handle error result.
+       * testsuite/d-demangle-expected: Add testcase.
+
        * d-demangle.c (dlang_parse_tuple): Correctly handle error result.
        * testsuite/d-demangle-expected: Add testcase.
 
index e98118e66d2c458fc906851b124625670983a8c3..becc402c1f82e68445b134ed4910ff9b664f11ec 100644 (file)
@@ -1217,8 +1217,13 @@ dlang_parse_assocarray (string *decl, const char *mangled)
   while (elements--)
     {
       mangled = dlang_value (decl, mangled, NULL, '\0');
+      if (mangled == NULL)
+       return NULL;
+
       string_append (decl, ":");
       mangled = dlang_value (decl, mangled, NULL, '\0');
+      if (mangled == NULL)
+       return NULL;
 
       if (elements != 0)
        string_append (decl, ", ");
index 44a8d3b079340a95521ac2a5e87b95dfe360a82e..490d4e1493144280d6377ed77ed32a63ae00a147 100644 (file)
@@ -1322,3 +1322,7 @@ _D7__T2fnVlS8S588888888888S6S5
 --format=dlang
 _D1_B699999999961*
 _D1_B699999999961*
+# Could crash
+--format=dlang
+_D5__T1fVHacA6666666666_
+_D5__T1fVHacA6666666666_