aboutsummaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2022-12-06 11:24:12 +0000
committerNick Clifton <nickc@redhat.com>2022-12-06 11:24:12 +0000
commit83f18e5ebe627163f744215d3760a8eaacee6ec1 (patch)
treee1be74d568ea7da55b75e916990b0dad10ecba69 /bfd
parent8db40179f0e61c2145a4470afa47fb1945a8d9c8 (diff)
downloadfsf-binutils-gdb-83f18e5ebe627163f744215d3760a8eaacee6ec1.zip
fsf-binutils-gdb-83f18e5ebe627163f744215d3760a8eaacee6ec1.tar.gz
fsf-binutils-gdb-83f18e5ebe627163f744215d3760a8eaacee6ec1.tar.bz2
Fix a dereference of NULL when scanning the symbol hashes array in the ARM linker.
PR 29852 * elf32-arm.c (cmse_scan): Check for NULL entries in the sym_hashes array. (elf32_arm_gc_mark_extra_sections): Likewise.
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog7
-rw-r--r--bfd/elf32-arm.c5
2 files changed, 12 insertions, 0 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index ee8eaf0..da2a30a 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,10 @@
+2022-12-06 Nick Clifton <nickc@redhat.com>
+
+ PR 29852
+ * elf32-arm.c (cmse_scan): Check for NULL entries in the
+ sym_hashes array.
+ (elf32_arm_gc_mark_extra_sections): Likewise.
+
2022-12-05 Nick Clifton <nickc@redhat.com>
PR 29848
diff --git a/bfd/elf32-arm.c b/bfd/elf32-arm.c
index c7d73171..86cc961 100644
--- a/bfd/elf32-arm.c
+++ b/bfd/elf32-arm.c
@@ -6008,6 +6008,9 @@ cmse_scan (bfd *input_bfd, struct elf32_arm_link_hash_table *htab,
else
{
cmse_hash = elf32_arm_hash_entry (sym_hashes[i - ext_start]);
+ if (cmse_hash == NULL)
+ continue;
+
sym_name = (char *) cmse_hash->root.root.root.string;
if (!startswith (sym_name, CMSE_PREFIX))
continue;
@@ -15987,6 +15990,8 @@ elf32_arm_gc_mark_extra_sections (struct bfd_link_info *info,
for (i = ext_start; i < sym_count; i++)
{
cmse_hash = elf32_arm_hash_entry (sym_hashes[i - ext_start]);
+ if (cmse_hash == NULL)
+ continue;
/* Assume it is a special symbol. If not, cmse_scan will
warn about it and user can do something about it. */