diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2017-09-22 14:15:40 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2017-09-22 14:18:20 -0700 |
commit | 61e3bf5f83f7e505b6bc51ef65426e5b31e6e360 (patch) | |
tree | ccc5443394efd461048b99ea7febeeae32a54fa3 | |
parent | 59ca4c1bbd48a47073eed2c4b933045674cafe41 (diff) | |
download | gdb-61e3bf5f83f7e505b6bc51ef65426e5b31e6e360.zip gdb-61e3bf5f83f7e505b6bc51ef65426e5b31e6e360.tar.gz gdb-61e3bf5f83f7e505b6bc51ef65426e5b31e6e360.tar.bz2 |
x86: Guard against corrupted PLT
There should be only one entry in PLT for a given symbol. Set howto to
NULL after processing a PLT entry to guard against corrupted PLT so that
the duplicated PLT entries are skipped.
PR binutils/22170
* elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Guard against
corrupted PLT.
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/elfxx-x86.c | 4 |
2 files changed, 10 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 1c24079..9b4cb08 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,11 @@ 2017-09-22 H.J. Lu <hongjiu.lu@intel.com> + PR binutils/22170 + * elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Guard against + corrupted PLT. + +2017-09-22 H.J. Lu <hongjiu.lu@intel.com> + PR binutils/22163 * elfxx-x86.c (_bfd_x86_elf_get_synthetic_symtab): Also return -1 if bfd_canonicalize_dynamic_reloc returns 0. diff --git a/bfd/elfxx-x86.c b/bfd/elfxx-x86.c index 11883de..dcc393b 100644 --- a/bfd/elfxx-x86.c +++ b/bfd/elfxx-x86.c @@ -1962,6 +1962,10 @@ _bfd_x86_elf_get_synthetic_symtab (bfd *abfd, names += sizeof ("@plt"); n++; s++; + /* There should be only one entry in PLT for a given + symbol. Set howto to NULL after processing a PLT + entry to guard against corrupted PLT. */ + p->howto = NULL; } offset += plt_entry_size; } |