summaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorBen L <bobsayshilol@live.co.uk>2019-04-29 22:19:01 +0000
committerJeff Law <law@gcc.gnu.org>2019-04-29 16:19:01 -0600
commit956bea2cd6110f104f12d5861143efc71213c140 (patch)
tree93fbd2fff674e214a9d87e8edd1a9bcb3689e160 /libiberty
parent7fb1d0214e4654bbecd212c7f0c2254398b46b13 (diff)
cp-demangle.c (d_expression_1): Don't peek ahead unless the current char is valid.
* cp-demangle.c (d_expression_1): Don't peek ahead unless the current char is valid. * testsuite/demangle-expected: Add testcase. From-SVN: r270664
Diffstat (limited to 'libiberty')
-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 06ff39a2656..70fc973a627 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 779b4e763a0..fcc2a209857 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 3723b7a90f1..328d51a84e9 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_