From 956bea2cd6110f104f12d5861143efc71213c140 Mon Sep 17 00:00:00 2001 From: Ben L Date: Mon, 29 Apr 2019 22:19:01 +0000 Subject: [PATCH] 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 --- libiberty/ChangeLog | 6 ++++++ libiberty/cp-demangle.c | 2 +- libiberty/testsuite/demangle-expected | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) 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 + + * 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 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_ -- 2.30.2