aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen L <bobsayshilol@live.co.uk>2019-04-30 14:39:14 +0000
committerJeff Law <law@gcc.gnu.org>2019-04-30 08:39:14 -0600
commit6c8dbbfe5cf50fbc86ddaccb8dec43d6e3cdd492 (patch)
tree356be62078c5777d0e0b58ab8edfadee966df329
parentf181b8e780c139ae73fe41f93492847aaede40cf (diff)
downloadgcc-6c8dbbfe5cf50fbc86ddaccb8dec43d6e3cdd492.zip
gcc-6c8dbbfe5cf50fbc86ddaccb8dec43d6e3cdd492.tar.gz
gcc-6c8dbbfe5cf50fbc86ddaccb8dec43d6e3cdd492.tar.bz2
d-demangle.c (dlang_parse_assocarray): Correctly handle error result.
* d-demangle.c (dlang_parse_assocarray): Correctly handle error result. * testsuite/d-demangle-expected: Add testcase. From-SVN: r270700
-rw-r--r--libiberty/ChangeLog3
-rw-r--r--libiberty/d-demangle.c5
-rw-r--r--libiberty/testsuite/d-demangle-expected4
3 files changed, 12 insertions, 0 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 104f0e8..0fac65b 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -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.
diff --git a/libiberty/d-demangle.c b/libiberty/d-demangle.c
index e98118e..becc402 100644
--- a/libiberty/d-demangle.c
+++ b/libiberty/d-demangle.c
@@ -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, ", ");
diff --git a/libiberty/testsuite/d-demangle-expected b/libiberty/testsuite/d-demangle-expected
index 44a8d3b..490d4e1 100644
--- a/libiberty/testsuite/d-demangle-expected
+++ b/libiberty/testsuite/d-demangle-expected
@@ -1322,3 +1322,7 @@ _D7__T2fnVlS8S588888888888S6S5
--format=dlang
_D1_B699999999961*
_D1_B699999999961*
+# Could crash
+--format=dlang
+_D5__T1fVHacA6666666666_
+_D5__T1fVHacA6666666666_