aboutsummaryrefslogtreecommitdiff
path: root/bfd/xcofflink.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-09-03 09:34:37 +0930
committerAlan Modra <amodra@gmail.com>2020-09-03 11:04:46 +0930
commitd48b742bc1a7af6a673e747c91bf7c72518a0b6a (patch)
tree60f4a40277a0d7e54689ab6b25967c31c997d1d2 /bfd/xcofflink.c
parent8807b2206d245d37d81030c693fbdf39f6789e7a (diff)
downloadbinutils-d48b742bc1a7af6a673e747c91bf7c72518a0b6a.zip
binutils-d48b742bc1a7af6a673e747c91bf7c72518a0b6a.tar.gz
binutils-d48b742bc1a7af6a673e747c91bf7c72518a0b6a.tar.bz2
heap use after free in xcoff_archive_info_eq
Using an input file objalloc memory for anything that isn't created when opening the bfd is not a good idea. The problem is that this memory can disappear if bfd_free_cached_info is called or when bfd closes files in order to keep the number of open files reasonable. bfd/ * xcofflink.c (xcoff_get_archive_info): Allocate xcoff_archive_info on the output bfd objalloc memory. ld/ * testsuite/ld-scripts/sysroot-prefix.exp (single_sysroot_prefix_test): Log $scriptname.
Diffstat (limited to 'bfd/xcofflink.c')
-rw-r--r--bfd/xcofflink.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c
index 8870525..ca7d7fe 100644
--- a/bfd/xcofflink.c
+++ b/bfd/xcofflink.c
@@ -525,7 +525,7 @@ xcoff_get_archive_info (struct bfd_link_info *info, bfd *archive)
entryp = *slot;
if (!entryp)
{
- entryp = bfd_zalloc (archive, sizeof (entry));
+ entryp = bfd_zalloc (info->output_bfd, sizeof (entry));
if (!entryp)
return NULL;