diff options
author | Nick Clifton <nickc@redhat.com> | 2016-12-02 17:46:26 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2016-12-02 17:47:07 +0000 |
commit | d7f399a8de4c55eb841db6493597a587fac002de (patch) | |
tree | d0ffd98c9c5daa211641537363706d18ba6391c9 | |
parent | 008459ea88ad4fdcb7da37dad7f68888ef6ecc47 (diff) | |
download | gdb-d7f399a8de4c55eb841db6493597a587fac002de.zip gdb-d7f399a8de4c55eb841db6493597a587fac002de.tar.gz gdb-d7f399a8de4c55eb841db6493597a587fac002de.tar.bz2 |
Fix seg-fault in linker when passed a corrupt binary input file.
PR lf/20908
* elflink.c (bfd_elf_final_link): Check for ELF flavour binaries
when following indirect links.
-rw-r--r-- | bfd/ChangeLog | 4 | ||||
-rw-r--r-- | bfd/elflink.c | 6 |
2 files changed, 10 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index c8085e7..1fe3cd4 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,9 @@ 2016-12-02 Nick Clifton <nickc@redhat.com> + PR lf/20908 + * elflink.c (bfd_elf_final_link): Check for ELF flavour binaries + when following indirect links. + PR ld/20909 * aoutx.h (aout_link_add_symbols): Fix off-by-one error in check for an illegal string offset. diff --git a/bfd/elflink.c b/bfd/elflink.c index 5f87f87..320f3be 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -11342,6 +11342,12 @@ bfd_elf_final_link (bfd *abfd, struct bfd_link_info *info) asection *sec; sec = p->u.indirect.section; + /* See PR 20908 for a reproducer. */ + if (bfd_get_flavour (sec->owner) != bfd_target_elf_flavour) + { + _bfd_error_handler (_("%B: not in ELF format"), sec->owner); + goto error_return; + } esdi = elf_section_data (sec); /* Mark all sections which are to be included in the |