summaryrefslogtreecommitdiff
path: root/libiberty/cp-demangle.c
diff options
context:
space:
mode:
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2006-09-22 13:52:29 +0000
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>2006-09-22 13:52:29 +0000
commit0b2d8352d25730408e9bfbbd5df7fca31d0fab82 (patch)
tree4025b693fa73085b7f98c46439100a9b1d9680cc /libiberty/cp-demangle.c
parent9a28c8460662b1cfee787f039a33cf45e5fe843f (diff)
downloadgcc-0b2d8352d25730408e9bfbbd5df7fca31d0fab82.tar.gz
PR other/29176
* cp-demangle.c (d_substitution): Check for overflow when computing substitution index. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@117144 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty/cp-demangle.c')
-rw-r--r--libiberty/cp-demangle.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index c7ee8786d92..2fa59785f2f 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -2505,6 +2505,8 @@ d_substitution (struct d_info *di, int prefix)
id = id * 36 + c - 'A' + 10;
else
return NULL;
+ if (id < 0)
+ return NULL;
c = d_next_char (di);
}
while (c != '_');