From 078c4bfc87bccd0c6e352192956ae8deaa5eaa86 Mon Sep 17 00:00:00 2001 From: Michael Snyder Date: Thu, 26 Jul 2007 18:30:28 +0000 Subject: [PATCH] 2007-07-26 Michael Snyder * aoutx.h (slurp_reloc_table): Return TRUE if reloc_size == zero or count == zero. --- bfd/ChangeLog | 3 +++ bfd/aoutx.h | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index d435e77d22..4fd7f4aa3b 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,5 +1,8 @@ 2007-07-26 Michael Snyder + * aoutx.h (slurp_reloc_table): Return TRUE if reloc_size == zero + or count == zero. + * tekhex.c (first_phase): Check return value for null. * elf.c (_bfd_elf_get_synthetic_symtab): Remove meaningless diff --git a/bfd/aoutx.h b/bfd/aoutx.h index 92e82ae346..e07d7bef39 100644 --- a/bfd/aoutx.h +++ b/bfd/aoutx.h @@ -2280,20 +2280,25 @@ NAME (aout, slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols) return FALSE; } + if (reloc_size == 0) + return TRUE; /* Nothing to be done. */ + if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0) return FALSE; each_size = obj_reloc_entry_size (abfd); count = reloc_size / each_size; + if (count == 0) + return TRUE; /* Nothing to be done. */ amt = count * sizeof (arelent); reloc_cache = bfd_zmalloc (amt); - if (reloc_cache == NULL && count != 0) + if (reloc_cache == NULL) return FALSE; relocs = bfd_malloc (reloc_size); - if (relocs == NULL && reloc_size != 0) + if (relocs == NULL) { free (reloc_cache); return FALSE; -- 2.34.1