From: Mark Wielaard Date: Fri, 21 Apr 2017 09:01:56 +0000 (+0000) Subject: libiberty: Always return NULL if d_add_substitution fails. X-Git-Tag: basepoints/gcc-9~7956 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=13b6ef76dc275232310ebfca27db08aeef9b858c;p=thirdparty%2Fgcc.git libiberty: Always return NULL if d_add_substitution fails. d_add_substitution can fail for various reasons, like when the subs array is full. If d_add_substitution fails d_substitution should return NULL early and not try to continue. Every other call of d_add_substitution is handled in the same way. libiberty/ChangeLog: * cp-demangle.c (d_substitution): Return NULL if d_add_substitution fails. From-SVN: r247055 --- diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 67ba6e7675a5..673eb2643010 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +2017-04-21 Mark Wielaard + + * cp-demangle.c (d_substitution): Return NULL if d_add_substitution + fails. + 2017-04-21 Mark Wielaard * cp-demangle.h (struct d_info): Remove did_subs field. diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 2c7d5c5faabe..aeff7a79d74e 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -3891,7 +3891,8 @@ d_substitution (struct d_info *di, int prefix) /* If there are ABI tags on the abbreviation, it becomes a substitution candidate. */ dc = d_abi_tags (di, dc); - d_add_substitution (di, dc); + if (! d_add_substitution (di, dc)) + return NULL; } return dc; }