Fix memory corruption on Mach-O systems by suppressing a memory tidy up.

PR target/19435
	* mach-o.c (bfd_mach_o_close_and_cleanup): Suppress code to free
	dsym filename buffer.
This commit is contained in:
Nick Clifton 2016-01-25 09:35:33 +00:00
parent 0a01d393e6
commit cf466c2ac5
2 changed files with 18 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2016-01-25 Nick Clifton <nickc@redhat.com>
PR target/19435
* mach-o.c (bfd_mach_o_close_and_cleanup): Suppress code to free
dsym filename buffer.
2016-01-24 Maciej W. Rozycki <macro@imgtec.com>
* elfxx-mips.c (BZ16_REG_FIELD): Simplify calculation.

View File

@ -5798,14 +5798,26 @@ bfd_mach_o_close_and_cleanup (bfd *abfd)
if (mdata->dsym_bfd != NULL)
{
bfd *fat_bfd = mdata->dsym_bfd->my_archive;
#if 0
/* FIXME: PR 19435: This calculation to find the memory allocated by
bfd_mach_o_follow_dsym for the filename does not always end up
selecting the correct pointer. Unfortunately this problem is
very hard to reproduce on a non Mach-O native system, so until it
can be traced and fixed on such a system, this code will remain
commented out. This does mean that there will be a memory leak,
but it is small, and happens when we are closing down, so it
should not matter too much.
char *dsym_filename = (char *)(fat_bfd
? fat_bfd->filename
: mdata->dsym_bfd->filename);
#endif
bfd_close (mdata->dsym_bfd);
mdata->dsym_bfd = NULL;
if (fat_bfd)
bfd_close (fat_bfd);
#if 0
free (dsym_filename);
#endif
}
}