aboutsummaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorAndrew Burgess <aburgess@broadcom.com>2014-06-11 10:57:27 +0000
committerPedro Alves <palves@gcc.gnu.org>2014-06-11 10:57:27 +0000
commitac8345a525674204550c7a9f5cbb3deec7467d6d (patch)
tree4d52113401587f99e543f605783372eabe76714c /libiberty
parentb785e0b8753dee45572f0ab735bb8752a3a888b0 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--libiberty/cplus-dem.c5
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')
{