aboutsummaryrefslogtreecommitdiff
path: root/bfd/aoutx.h
diff options
context:
space:
mode:
Diffstat (limited to 'bfd/aoutx.h')
-rw-r--r--bfd/aoutx.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index bef59b4..cb0887a 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -1756,6 +1756,8 @@ NAME (aout, slurp_symbol_table) (bfd *abfd)
return TRUE; /* Nothing to do. */
cached_size *= sizeof (aout_symbol_type);
+ if (cached_size >= (bfd_size_type) bfd_get_size (abfd))
+ return FALSE;
cached = (aout_symbol_type *) bfd_zmalloc (cached_size);
if (cached == NULL)
return FALSE;
@@ -2307,6 +2309,11 @@ NAME (aout, slurp_reloc_table) (bfd *abfd, sec_ptr asect, asymbol **symbols)
if (reloc_size == 0)
return TRUE; /* Nothing to be done. */
+ /* PR binutils/17512: Do not even try to
+ load the relocs if their size is corrupt. */
+ if (reloc_size + asect->rel_filepos >= (bfd_size_type) bfd_get_size (abfd))
+ return FALSE;
+
if (bfd_seek (abfd, asect->rel_filepos, SEEK_SET) != 0)
return FALSE;