summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2016-01-25 09:35:33 +0000
committerNick Clifton <nickc@redhat.com>2016-01-25 09:35:33 +0000
commitcf466c2ac5ac55bb9b30b96fbdcad564e8c1ccc8 (patch)
tree1dad670d758246446a6a34602fa2324a92481135 /bfd
parent0a01d393e6317b1ea69f8801d2b6546b4aa440ed (diff)
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.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/mach-o.c12
2 files changed, 18 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index abf583be18..dcd6ea1425 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -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.
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index 72454f9d0b..0f39157ce6 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -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
}
}