aboutsummaryrefslogtreecommitdiff
path: root/libiberty/cp-demangle.c
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2010-01-26 04:05:32 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2010-01-26 04:05:32 +0000
commit79b754d47ff5fef99fe57b3579ef37f135a6dc6e (patch)
treeacf80aac712595d9af66c48e19f3415b96e24e07 /libiberty/cp-demangle.c
parent77f02d096a409ba23e9f19a887ae6561ad0424ce (diff)
downloadgcc-79b754d47ff5fef99fe57b3579ef37f135a6dc6e.zip
gcc-79b754d47ff5fef99fe57b3579ef37f135a6dc6e.tar.gz
gcc-79b754d47ff5fef99fe57b3579ef37f135a6dc6e.tar.bz2
cp-demangle.c (cplus_demangle_type): Check for invalid type after "DF".
* cp-demangle.c (cplus_demangle_type): Check for invalid type after "DF". * testsuite/demangle-expected: Add test. From-SVN: r156226
Diffstat (limited to 'libiberty/cp-demangle.c')
-rw-r--r--libiberty/cp-demangle.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index f28e163..2f4d0cc 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -1,5 +1,5 @@
/* Demangler for g++ V3 ABI.
- Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008
+ Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
Free Software Foundation, Inc.
Written by Ian Lance Taylor <ian@wasabisystems.com>.
@@ -2193,6 +2193,8 @@ cplus_demangle_type (struct d_info *di)
/* For demangling we don't care about the bits. */
d_number (di);
ret->u.s_fixed.length = cplus_demangle_type (di);
+ if (ret->u.s_fixed.length == NULL)
+ return NULL;
d_number (di);
peek = d_next_char (di);
ret->u.s_fixed.sat = (peek == 's');