diff options
author | Alan Modra <amodra@gmail.com> | 2017-09-24 17:10:14 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2017-09-24 21:01:30 +0930 |
commit | a26a013f22a19e2c16729e64f40ef8a7dfcc086e (patch) | |
tree | e34c6fbf1e01b3d26e1b6409fc1a5a090a033064 /bfd | |
parent | 52a93b95ec0771c97e26f0bb28630a271a667bd2 (diff) | |
download | gdb-a26a013f22a19e2c16729e64f40ef8a7dfcc086e.zip gdb-a26a013f22a19e2c16729e64f40ef8a7dfcc086e.tar.gz gdb-a26a013f22a19e2c16729e64f40ef8a7dfcc086e.tar.bz2 |
PR22191, memory leak in dwarf2.c
table->sequences is a linked list before it is replaced by a bfd_alloc
array in sort_line_sequences.
PR 22191
* dwarf2.c (decode_line_info): Properly free line sequences on error.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/dwarf2.c | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 450217a..c465462 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,10 @@ 2017-09-24 Alan Modra <amodra@gmail.com> + PR 22191 + * dwarf2.c (decode_line_info): Properly free line sequences on error. + +2017-09-24 Alan Modra <amodra@gmail.com> + PR 22187 * dwarf2.c (find_abstract_instance_name): Add orig_info_ptr and pname param. Return status. Make name const. Don't abort, diff --git a/bfd/dwarf2.c b/bfd/dwarf2.c index ec4c311..1566cd8 100644 --- a/bfd/dwarf2.c +++ b/bfd/dwarf2.c @@ -2476,8 +2476,12 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash) return table; fail: - if (table->sequences != NULL) - free (table->sequences); + while (table->sequences != NULL) + { + struct line_sequence* seq = table->sequences; + table->sequences = table->sequences->prev_sequence; + free (seq); + } if (table->files != NULL) free (table->files); if (table->dirs != NULL) |