bfd_stat_arch_elt buffer overflow
If you manage to put an xcoff object file into a non-xcoff archive (created by first putting a non-xcoff object file into it), and have xcoff support compiled into libbfd, then objdump -x on the archive can segfault. The problem is that _bfd_xcoff_stat_arch_elt expects abfd->arelt_data->arch_header to be one of the xcoff variants, but arelt_data is generated depending on the archive format, *not* the element format. * bfd.c (bfd_stat_arch_elt): Use vector of containing archive, if file is an archive element. * bfd-in2.h: Regenerate.
This commit is contained in:
parent
d0adf5451e
commit
ff69a8949b
@ -1,3 +1,9 @@
|
||||
2020-02-27 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* bfd.c (bfd_stat_arch_elt): Use vector of containing archive,
|
||||
if file is an archive element.
|
||||
* bfd-in2.h: Regenerate.
|
||||
|
||||
2020-02-26 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* archive.c (do_slurp_bsd_armap): Increase minimum parsed_size, and
|
||||
|
@ -7121,7 +7121,8 @@ bfd_boolean bfd_set_private_flags (bfd *abfd, flagword flags);
|
||||
BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
|
||||
|
||||
#define bfd_stat_arch_elt(abfd, stat) \
|
||||
BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
|
||||
BFD_SEND (abfd->my_archive ? abfd->my_archive : abfd, \
|
||||
_bfd_stat_arch_elt, (abfd, stat))
|
||||
|
||||
#define bfd_update_armap_timestamp(abfd) \
|
||||
BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
|
||||
|
@ -2063,7 +2063,8 @@ DESCRIPTION
|
||||
. BFD_SEND (abfd, _bfd_debug_info_accumulate, (abfd, section))
|
||||
.
|
||||
.#define bfd_stat_arch_elt(abfd, stat) \
|
||||
. BFD_SEND (abfd, _bfd_stat_arch_elt,(abfd, stat))
|
||||
. BFD_SEND (abfd->my_archive ? abfd->my_archive : abfd, \
|
||||
. _bfd_stat_arch_elt, (abfd, stat))
|
||||
.
|
||||
.#define bfd_update_armap_timestamp(abfd) \
|
||||
. BFD_SEND (abfd, _bfd_update_armap_timestamp, (abfd))
|
||||
|
Loading…
x
Reference in New Issue
Block a user