diff options
author | Nick Clifton <nickc@redhat.com> | 2021-10-19 16:02:49 +0100 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2021-10-19 16:02:49 +0100 |
commit | cf487499e0d7ef64ab63d6c76bf298bfaf64b980 (patch) | |
tree | 122027a0a59f41ba89e2cd5c5a991a0cf2e76f6f /bfd | |
parent | d4ef5e75c7ebf57b946f59ce85568b9c459a02f4 (diff) | |
download | gdb-cf487499e0d7ef64ab63d6c76bf298bfaf64b980.zip gdb-cf487499e0d7ef64ab63d6c76bf298bfaf64b980.tar.gz gdb-cf487499e0d7ef64ab63d6c76bf298bfaf64b980.tar.bz2 |
Fix a potential illegal memory access when testing for a special LTO symbol name.
bfd * linker.c (_bfd_generic_link_add_one_symbol): Test for a NULL
name before checking to see if the symbol is __gnu_lto_slim.
* archive.c (_bfd_compute_and_write_armap): Likewise.
binutils
* nm.c (filter_symbols): Test for a NULL name before checking to
see if the symbol is __gnu_lto_slim.
* objcopy.c (filter_symbols): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r-- | bfd/ChangeLog | 6 | ||||
-rw-r--r-- | bfd/archive.c | 3 | ||||
-rw-r--r-- | bfd/linker.c | 1 |
3 files changed, 9 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 2a08ff7..d539dbb 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2021-10-19 Nick Clifton <nickc@redhat.com> + + * linker.c (_bfd_generic_link_add_one_symbol): Test for a NULL + name before checking to see if the symbol is __gnu_lto_slim. + * archive.c (_bfd_compute_and_write_armap): Likewise. + 2021-09-27 Nick Alcock <nick.alcock@oracle.com> * configure: Regenerate. diff --git a/bfd/archive.c b/bfd/archive.c index 2ac680d..dc17356 100644 --- a/bfd/archive.c +++ b/bfd/archive.c @@ -2357,7 +2357,8 @@ _bfd_compute_and_write_armap (bfd *arch, unsigned int elength) map = new_map; } - if (syms[src_count]->name[0] == '_' + if (syms[src_count]->name != NULL + && syms[src_count]->name[0] == '_' && syms[src_count]->name[1] == '_' && strcmp (syms[src_count]->name + (syms[src_count]->name[2] == '_'), diff --git a/bfd/linker.c b/bfd/linker.c index f8257ea..3019dae 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1420,6 +1420,7 @@ _bfd_generic_link_add_one_symbol (struct bfd_link_info *info, { row = COMMON_ROW; if (!bfd_link_relocatable (info) + && name != NULL && name[0] == '_' && name[1] == '_' && strcmp (name + (name[2] == '_'), "__gnu_lto_slim") == 0) |