diff options
author | Hannes Domani <ssbssa@yahoo.de> | 2019-12-27 13:41:58 +0100 |
---|---|---|
committer | Hannes Domani <ssbssa@yahoo.de> | 2020-01-03 17:58:19 +0100 |
commit | 44f81a76542dbeada2541a05de191ae0ac0fbc2c (patch) | |
tree | 6fb49d62e67f01f282442d70ea3c6993746b0852 | |
parent | 25057eb004b9a6e55b96f64176bb27cf0c457e23 (diff) | |
download | gdb-44f81a76542dbeada2541a05de191ae0ac0fbc2c.zip gdb-44f81a76542dbeada2541a05de191ae0ac0fbc2c.tar.gz gdb-44f81a76542dbeada2541a05de191ae0ac0fbc2c.tar.bz2 |
solib_target_free_so memory leak
gdb/ChangeLog:
2020-01-03 Hannes Domani <ssbssa@yahoo.de>
* solib-target.c (struct lm_info_target):
Change offsets to be a unique_xmalloc_ptr.
(solib_target_relocate_section_addresses): Update.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/solib-target.c | 10 |
2 files changed, 11 insertions, 5 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index a7817d6..3b26a31 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2020-01-03 Hannes Domani <ssbssa@yahoo.de> + * solib-target.c (struct lm_info_target): + Change offsets to be a unique_xmalloc_ptr. + (solib_target_relocate_section_addresses): Update. + +2020-01-03 Hannes Domani <ssbssa@yahoo.de> + * windows-nat.c (windows_clear_solib): Free so_list linked list. 2020-01-03 Bernd Edlinger <bernd.edlinger@hotmail.de> diff --git a/gdb/solib-target.c b/gdb/solib-target.c index 113211a..e90107e 100644 --- a/gdb/solib-target.c +++ b/gdb/solib-target.c @@ -46,7 +46,7 @@ struct lm_info_target : public lm_info_base /* The cached offsets for each section of this shared library, determined from SEGMENT_BASES, or SECTION_BASES. */ - section_offsets *offsets = NULL; + gdb::unique_xmalloc_ptr<section_offsets> offsets; }; typedef std::vector<std::unique_ptr<lm_info_target>> lm_info_vector; @@ -309,9 +309,8 @@ solib_target_relocate_section_addresses (struct so_list *so, { int num_sections = gdb_bfd_count_sections (so->abfd); - li->offsets - = ((struct section_offsets *) - xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections))); + li->offsets.reset ((struct section_offsets *) + xzalloc (SIZEOF_N_SECTION_OFFSETS (num_sections))); if (!li->section_bases.empty ()) { @@ -377,7 +376,8 @@ Could not relocate shared library \"%s\": no segments"), so->so_name); ULONGEST orig_delta; int i; - if (!symfile_map_offsets_to_segments (so->abfd, data, li->offsets, + if (!symfile_map_offsets_to_segments (so->abfd, data, + li->offsets.get (), li->segment_bases.size (), li->segment_bases.data ())) warning (_("\ |