aboutsummaryrefslogtreecommitdiff
path: root/binutils/rdcoff.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2018-07-25 10:56:45 +0100
committerNick Clifton <nickc@redhat.com>2018-07-25 10:56:45 +0100
commite3d39609d16dccfef8fd1f02090fcd1df82736df (patch)
tree1399c03846e9db283a88eabedf40a28ef397c802 /binutils/rdcoff.c
parent491993044ba6cfb2b0fc93c8b3032d5c91cccda5 (diff)
downloadgdb-e3d39609d16dccfef8fd1f02090fcd1df82736df.zip
gdb-e3d39609d16dccfef8fd1f02090fcd1df82736df.tar.gz
gdb-e3d39609d16dccfef8fd1f02090fcd1df82736df.tar.bz2
Fix potential memory leaks in some of the binutils source files.
* rdcoff.c (parse_coff_struct_type): Free fields array upon early exit. (parse_coff_enum_type): Free names and vals arrays upon early exit. * rddbg.c (read_section_stabs_debugging_info): Free shandle and strings and stabs arrays upon early exit. * readelf.c (get_32bit_section_headers): Free shdrs structure upon early exit. (get_64bit_section_headers): Likewise. (get_32bit_elf_symbols): Generate an error if multiple symbol table index sections are associated with the same symbol section. (get_64bit_elf_symbols): Likewise. (process_dynamic_section): Generate an error if there are multiple dynamic symbol table sections, multiple dynamic string tables or multiple dynamic symbol information sections.
Diffstat (limited to 'binutils/rdcoff.c')
-rw-r--r--binutils/rdcoff.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/binutils/rdcoff.c b/binutils/rdcoff.c
index cc6fec5..2f0c316 100644
--- a/binutils/rdcoff.c
+++ b/binutils/rdcoff.c
@@ -409,6 +409,7 @@ parse_coff_struct_type (bfd *abfd, struct coff_symbols *symbols,
{
non_fatal (_("bfd_coff_get_syment failed: %s"),
bfd_errmsg (bfd_get_error ()));
+ free (fields);
return DEBUG_TYPE_NULL;
}
@@ -425,6 +426,7 @@ parse_coff_struct_type (bfd *abfd, struct coff_symbols *symbols,
{
non_fatal (_("bfd_coff_get_auxent failed: %s"),
bfd_errmsg (bfd_get_error ()));
+ free (fields);
return DEBUG_TYPE_NULL;
}
psubaux = &auxent;
@@ -514,6 +516,8 @@ parse_coff_enum_type (bfd *abfd, struct coff_symbols *symbols,
{
non_fatal (_("bfd_coff_get_syment failed: %s"),
bfd_errmsg (bfd_get_error ()));
+ free (names);
+ free (vals);
return DEBUG_TYPE_NULL;
}