aboutsummaryrefslogtreecommitdiff
path: root/libbacktrace
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2018-12-28 03:43:15 +0000
committerTom de Vries <vries@gcc.gnu.org>2018-12-28 03:43:15 +0000
commit53a52133a5fc74d63ce17b328774706bf1e79e02 (patch)
treebb5714dffebc534c285ee313fee9c02d9645cbce /libbacktrace
parentf14303090835f84474b6bf8c38bc0d07dbfc2069 (diff)
downloadgcc-53a52133a5fc74d63ce17b328774706bf1e79e02.zip
gcc-53a52133a5fc74d63ce17b328774706bf1e79e02.tar.gz
gcc-53a52133a5fc74d63ce17b328774706bf1e79e02.tar.bz2
[libbacktrace] Fix memory leak in build_address_map
While upon failure in build_address_map we call free_unit_addrs_vector, this does not actually free the addrs vector, but merely the abbrevs of the units pointed at by the elements of the addrs vector. Fix this by adding code to build_address_map to make sure that the addrs vector is freed upon failure. Bootstrapped and reg-tested on x86_64. 2018-12-28 Tom de Vries <tdevries@suse.de> * dwarf.c (build_address_map): Free addrs vector upon failure. From-SVN: r267442
Diffstat (limited to 'libbacktrace')
-rw-r--r--libbacktrace/ChangeLog4
-rw-r--r--libbacktrace/dwarf.c5
2 files changed, 9 insertions, 0 deletions
diff --git a/libbacktrace/ChangeLog b/libbacktrace/ChangeLog
index d3d964b..60e5f03 100644
--- a/libbacktrace/ChangeLog
+++ b/libbacktrace/ChangeLog
@@ -1,3 +1,7 @@
+2018-12-28 Tom de Vries <tdevries@suse.de>
+
+ * dwarf.c (build_address_map): Free addrs vector upon failure.
+
2018-12-14 Tom de Vries <tdevries@suse.de>
PR testsuite/88491
diff --git a/libbacktrace/dwarf.c b/libbacktrace/dwarf.c
index 48ef363..37a08ca 100644
--- a/libbacktrace/dwarf.c
+++ b/libbacktrace/dwarf.c
@@ -1552,6 +1552,11 @@ build_address_map (struct backtrace_state *state, uintptr_t base_address,
fail:
free_abbrevs (state, &abbrevs, error_callback, data);
free_unit_addrs_vector (state, addrs, error_callback, data);
+ if (addrs->count > 0)
+ {
+ backtrace_vector_free (state, &addrs->vec, error_callback, data);
+ addrs->count = 0;
+ }
return 0;
}