[binutils-gdb] PR26452, ASAN: som_compute_checksum som.c:4293
Alan Modra
amodra@sourceware.org
Tue Aug 25 13:38:21 GMT 2020
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=2186273ac4ba9fa4c56dc8c5d47ab3a7e358cec9
commit 2186273ac4ba9fa4c56dc8c5d47ab3a7e358cec9
Author: Alan Modra <amodra@gmail.com>
Date: Tue Aug 25 15:46:02 2020 +0930
PR26452, ASAN: som_compute_checksum som.c:4293
PR 26452
* som.c (som_compute_checksum): XOR 32-bit words in header,
not unsigned long sized words.
Diff:
---
bfd/ChangeLog | 6 ++++++
bfd/som.c | 11 ++++++-----
2 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 4fc95529ab3..38920f3a100 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2020-08-25 Alan Modra <amodra@gmail.com>
+
+ PR 26452
+ * som.c (som_compute_checksum): XOR 32-bit words in header,
+ not unsigned long sized words.
+
2020-08-25 Alan Modra <amodra@gmail.com>
PR 26430
diff --git a/bfd/som.c b/bfd/som.c
index 887d9b187ef..4f0a606c18a 100644
--- a/bfd/som.c
+++ b/bfd/som.c
@@ -37,7 +37,7 @@ static bfd_boolean som_mkobject (bfd *);
static bfd_boolean som_is_space (asection *);
static bfd_boolean som_is_subspace (asection *);
static int compare_subspaces (const void *, const void *);
-static unsigned long som_compute_checksum (struct som_external_header *);
+static uint32_t som_compute_checksum (struct som_external_header *);
static bfd_boolean som_build_and_write_symbol_table (bfd *);
static unsigned int som_slurp_symbol_table (bfd *);
@@ -4281,14 +4281,15 @@ som_finish_writing (bfd *abfd)
/* Compute and return the checksum for a SOM file header. */
-static unsigned long
+static uint32_t
som_compute_checksum (struct som_external_header *hdr)
{
- unsigned long checksum, count, i;
- unsigned long *buffer = (unsigned long *) hdr;
+ size_t count, i;
+ uint32_t checksum;
+ uint32_t *buffer = (uint32_t *) hdr;
checksum = 0;
- count = sizeof (struct som_external_header) / 4;
+ count = sizeof (*hdr) / sizeof (*buffer);
for (i = 0; i < count; i++)
checksum ^= *(buffer + i);
More information about the Binutils-cvs
mailing list