diff options
author | Alan Modra <amodra@gmail.com> | 2020-09-03 09:34:37 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2020-09-03 11:04:46 +0930 |
commit | d48b742bc1a7af6a673e747c91bf7c72518a0b6a (patch) | |
tree | 60f4a40277a0d7e54689ab6b25967c31c997d1d2 /bfd | |
parent | 8807b2206d245d37d81030c693fbdf39f6789e7a (diff) | |
download | gdb-d48b742bc1a7af6a673e747c91bf7c72518a0b6a.zip gdb-d48b742bc1a7af6a673e747c91bf7c72518a0b6a.tar.gz gdb-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')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/xcofflink.c | 2 |
2 files changed, 6 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 156bb7a..76055ba 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2020-09-03 Alan Modra <amodra@gmail.com> + + * xcofflink.c (xcoff_get_archive_info): Allocate xcoff_archive_info + on the output bfd objalloc memory. + 2020-09-02 Alan Modra <amodra@gmail.com> * elfnn-aarch64.c (elfNN_aarch64_relocate_section): Correct type 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; |