aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libiberty/ChangeLog6
-rw-r--r--libiberty/cp-demangle.c2
-rw-r--r--libiberty/testsuite/demangle-expected4
3 files changed, 11 insertions, 1 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 06ff39a..70fc973 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,9 @@
+2019-04-29 Ben L <bobsayshilol@live.co.uk>
+
+ * cp-demangle.c (d_expression_1): Don't peek ahead unless the current
+ char is valid.
+ * testsuite/demangle-expected: Add testcase.
+
2019-04-10 Nick Clifton <nickc@redhat.com>
PR 89394
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index 779b4e7..fcc2a20 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -3359,7 +3359,7 @@ d_expression_1 (struct d_info *di)
d_advance (di, 2);
if (peek == 't')
type = cplus_demangle_type (di);
- if (!d_peek_next_char (di))
+ if (!d_peek_char (di) || !d_peek_next_char (di))
return NULL;
return d_make_comp (di, DEMANGLE_COMPONENT_INITIALIZER_LIST,
type, d_exprlist (di, 'E'));
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 3723b7a..328d51a 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -68,6 +68,10 @@ _$_H1R
_Q8ccQ4M2e.
_Q8ccQ4M2e.
+# Could crash
+
+_ZmmAtl
+_ZmmAtl
#
# demangler/80513 Test for bogus characters after __thunk_