diff options
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 5 | ||||
-rw-r--r-- | bfd/aoutx.h | 20 |
2 files changed, 21 insertions, 4 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 7852737..34932e7 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2020-05-12 Gunther Nikl <gnikl@justmail.de> + + * aoutx.h (NAME (aout, swap_std_reloc_out)): Reject an unsupported + relocation size. + 2020-05-11 Alan Modra <amodra@gmail.com> * elf64-ppc.c (xlate_pcrel_opt): Handle lxvp and stxvp. diff --git a/bfd/aoutx.h b/bfd/aoutx.h index d545746..9ffb3fe 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -1946,10 +1946,22 @@ NAME (aout, swap_std_reloc_out) (bfd *abfd, BFD_ASSERT (g->howto != NULL); - if (bfd_get_reloc_size (g->howto) != 8) - r_length = g->howto->size; /* Size as a power of two. */ - else - r_length = 3; + switch (bfd_get_reloc_size (g->howto)) + { + default: + _bfd_error_handler (_("%pB: unsupported AOUT relocation size: %d"), + abfd, bfd_get_reloc_size (g->howto)); + bfd_set_error (bfd_error_bad_value); + return; + case 1: + case 2: + case 4: + r_length = g->howto->size; /* Size as a power of two. */ + break; + case 8: + r_length = 3; + break; + } r_pcrel = (int) g->howto->pc_relative; /* Relative to PC? */ /* XXX This relies on relocs coming from a.out files. */ |