diff options
author | Alan Modra <amodra@gmail.com> | 2025-02-18 19:32:42 +1030 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2025-02-18 19:36:18 +1030 |
commit | 28588dc52c9262b16e8d18e0fab3829797d2c595 (patch) | |
tree | 9847b0c563efc05bd574d4c00f09335eb3f1949b | |
parent | 2b020f53230f57f4f44029aceee95ca484485235 (diff) | |
download | binutils-28588dc52c9262b16e8d18e0fab3829797d2c595.zip binutils-28588dc52c9262b16e8d18e0fab3829797d2c595.tar.gz binutils-28588dc52c9262b16e8d18e0fab3829797d2c595.tar.bz2 |
PR32703, Null pointer dereference in bfd/linker.c
NULL is a possible return from bfd_section_already_linked_table_lookup
if out-of-memory.
PR 32703
* linker.c (_bfd_generic_section_already_linked): Catch
bfd_section_already_linked_table_lookup failure.
* coffgen.c (_bfd_coff_section_already_linked): Likewise.
-rw-r--r-- | bfd/coffgen.c | 7 | ||||
-rw-r--r-- | bfd/linker.c | 7 |
2 files changed, 12 insertions, 2 deletions
diff --git a/bfd/coffgen.c b/bfd/coffgen.c index 5dbd666..f87e54f 100644 --- a/bfd/coffgen.c +++ b/bfd/coffgen.c @@ -2767,6 +2767,8 @@ _bfd_coff_section_already_linked (bfd *abfd, } already_linked_list = bfd_section_already_linked_table_lookup (key); + if (!already_linked_list) + goto bad; for (l = already_linked_list->entry; l != NULL; l = l->next) { @@ -2794,7 +2796,10 @@ _bfd_coff_section_already_linked (bfd *abfd, /* This is the first section with this name. Record it. */ if (!bfd_section_already_linked_table_insert (already_linked_list, sec)) - info->callbacks->fatal (_("%P: already_linked_table: %E\n")); + { + bad: + info->callbacks->fatal (_("%P: already_linked_table: %E\n")); + } return false; } diff --git a/bfd/linker.c b/bfd/linker.c index 3466391..2a4b8f0 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -3025,6 +3025,8 @@ _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED, name = bfd_section_name (sec); already_linked_list = bfd_section_already_linked_table_lookup (name); + if (!already_linked_list) + goto bad; l = already_linked_list->entry; if (l != NULL) @@ -3036,7 +3038,10 @@ _bfd_generic_section_already_linked (bfd *abfd ATTRIBUTE_UNUSED, /* This is the first section with this name. Record it. */ if (!bfd_section_already_linked_table_insert (already_linked_list, sec)) - info->callbacks->fatal (_("%P: already_linked_table: %E\n")); + { + bad: + info->callbacks->fatal (_("%P: already_linked_table: %E\n")); + } return false; } |