diff options
author | Andrew Burgess <aburgess@broadcom.com> | 2014-06-11 10:57:27 +0000 |
---|---|---|
committer | Pedro Alves <palves@gcc.gnu.org> | 2014-06-11 10:57:27 +0000 |
commit | ac8345a525674204550c7a9f5cbb3deec7467d6d (patch) | |
tree | 4d52113401587f99e543f605783372eabe76714c /libiberty | |
parent | b785e0b8753dee45572f0ab735bb8752a3a888b0 (diff) | |
download | gcc-ac8345a525674204550c7a9f5cbb3deec7467d6d.zip gcc-ac8345a525674204550c7a9f5cbb3deec7467d6d.tar.gz gcc-ac8345a525674204550c7a9f5cbb3deec7467d6d.tar.bz2 |
Delete temporary string within demangler even in failure cases.
A call to demangle_template might allocate storage within a temporary
string even if the call to demangle_template eventually returns
failure.
This will never cause the demangler to crash, but does leak memory, as
a result I've not added any tests for this.
Calling string_delete is safe, even if nothing is allocated into the
string, the string is initialised with string_init, so we know the
internal pointers are NULL.
libiberty/ChangeLog
* cplus-dem.c (do_type): Call string_delete even if the call to
demangle_template fails.
From-SVN: r211449
Diffstat (limited to 'libiberty')
-rw-r--r-- | libiberty/ChangeLog | 5 | ||||
-rw-r--r-- | libiberty/cplus-dem.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 8390e4c7..ddd96cc 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +2014-06-11 Andrew Burgess <aburgess@broadcom.com> + + * cplus-dem.c (do_type): Call string_delete even if the call to + demangle_template fails. + 2014-06-01 Ray Donnelly <mingw.android@gmail.com> * pex-win32.c (argv_to_cmdline): Don't quote diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index 2dd0a8a..52767cc 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -3663,7 +3663,10 @@ do_type (struct work_stuff *work, const char **mangled, string *result) string_delete (&temp); } else - break; + { + string_delete (&temp); + break; + } } else if (**mangled == 'Q') { |