mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
Fix seg-fault running strip on a corrupt binary.
PR binutils/20929 * aoutx.h (squirt_out_relocs): Check for relocs without an associated symbol.
This commit is contained in:
parent
5eecd8621b
commit
92744f0580
@ -1,3 +1,9 @@
|
||||
2016-12-06 Nick Clifton <nickc@redhat.com>
|
||||
|
||||
PR binutils/20929
|
||||
* aoutx.h (squirt_out_relocs): Check for relocs without an
|
||||
associated symbol.
|
||||
|
||||
2016-12-06 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* elf64-ppc.c (ok_lo_toc_insn): Add r_type param. Recognize
|
||||
|
17
bfd/aoutx.h
17
bfd/aoutx.h
@ -2395,10 +2395,15 @@ NAME (aout, squirt_out_relocs) (bfd *abfd, asection *section)
|
||||
count != 0;
|
||||
--count, natptr += each_size, ++generic)
|
||||
{
|
||||
if ((*generic)->howto == NULL)
|
||||
/* PR 20921: If the howto field has not been initialised then skip
|
||||
this reloc.
|
||||
PR 20929: Similarly for the symbol field. */
|
||||
if ((*generic)->howto == NULL
|
||||
|| (*generic)->sym_ptr_ptr == NULL)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
_bfd_error_handler (_("%B: attempt to write out unknown reloc type"), abfd);
|
||||
_bfd_error_handler (_("\
|
||||
%B: attempt to write out unknown reloc type"), abfd);
|
||||
return FALSE;
|
||||
}
|
||||
MY_swap_ext_reloc_out (abfd, *generic,
|
||||
@ -2411,12 +2416,12 @@ NAME (aout, squirt_out_relocs) (bfd *abfd, asection *section)
|
||||
count != 0;
|
||||
--count, natptr += each_size, ++generic)
|
||||
{
|
||||
/* PR 20921: If the howto field has not been initialised then skip
|
||||
this reloc. */
|
||||
if ((*generic)->howto == NULL)
|
||||
if ((*generic)->howto == NULL
|
||||
|| (*generic)->sym_ptr_ptr == NULL)
|
||||
{
|
||||
bfd_set_error (bfd_error_invalid_operation);
|
||||
_bfd_error_handler (_("%B: attempt to write out unknown reloc type"), abfd);
|
||||
_bfd_error_handler (_("\
|
||||
%B: attempt to write out unknown reloc type"), abfd);
|
||||
return FALSE;
|
||||
}
|
||||
MY_swap_std_reloc_out (abfd, *generic,
|
||||
|
Loading…
Reference in New Issue
Block a user