From cf0ad5bbf2d3fdb751b5f3f49e55d251d48c7416 Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Fri, 4 Jan 2019 12:11:51 +0000 Subject: [PATCH] Fix ridiculously small memory leak. PR 24001 * objcopy.c (copy_object): Free dhandle after writing out the debug information. * objdump.c (dump_bfd): Free dhandle after printing out the debug information. --- binutils/ChangeLog | 8 ++++++++ binutils/objcopy.c | 9 ++++++++- binutils/objdump.c | 2 ++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 3fc4606d0a6..c1b2d0b9958 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,11 @@ +2019-01-04 Nick Clifton + + PR 24001 + * objcopy.c (copy_object): Free dhandle after writing out the + debug information. + * objdump.c (dump_bfd): Free dhandle after printing out the debug + information. + 2019-01-01 Alan Modra Update year range in copyright notice of all files. diff --git a/binutils/objcopy.c b/binutils/objcopy.c index 9bc1230ef93..0e17b863d5a 100644 --- a/binutils/objcopy.c +++ b/binutils/objcopy.c @@ -3087,7 +3087,14 @@ copy_object (bfd *ibfd, bfd *obfd, const bfd_arch_info_type *input_arch) if (convert_debugging && dhandle != NULL) { - if (! write_debugging_info (obfd, dhandle, &symcount, &osympp)) + bfd_boolean res; + + res = write_debugging_info (obfd, dhandle, &symcount, &osympp); + + free (dhandle); + dhandle = NULL; /* Paranoia... */ + + if (! res) { status = 1; return FALSE; diff --git a/binutils/objdump.c b/binutils/objdump.c index 37a28d5eed2..220d93a3251 100644 --- a/binutils/objdump.c +++ b/binutils/objdump.c @@ -3692,6 +3692,8 @@ dump_bfd (bfd *abfd) bfd_get_filename (abfd)); exit_status = 1; } + + free (dhandle); } /* PR 6483: If there was no STABS debug info in the file, try DWARF instead. */ -- 2.30.2