summaryrefslogtreecommitdiff
path: root/bfd
diff options
context:
space:
mode:
Diffstat (limited to 'bfd')
-rw-r--r--bfd/ChangeLog9
-rw-r--r--bfd/aoutx.h7
-rw-r--r--bfd/coffgen.c12
-rw-r--r--bfd/compress.c8
4 files changed, 17 insertions, 19 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 7a57b1265f9..97057d46dc0 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,12 @@
+2014-11-06 Nick Clifton <nickc@redhat.com>
+
+ * aoutx.h (slurp_symbol_table): Revert previous delta.
+ (slurp_reloc_table): Likewise.
+ * compress.c (bfd_get_full_section_contents): Remove file size
+ test.
+ * coffgen.c (coff_get_normalized_symtab): Allow zero-sized symtabs
+ and do not complain about linker generated files.
+
2014-11-06 Will Newton <will.newton@linaro.org>
* elf-attrs.c (_bfd_elf_parse_attributes): Handle zero
diff --git a/bfd/aoutx.h b/bfd/aoutx.h
index cb0887a4bac..bef59b42366 100644
--- a/bfd/aoutx.h
+++ b/bfd/aoutx.h
@@ -1756,8 +1756,6 @@ 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;
@@ -2309,11 +2307,6 @@ 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;
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index d0bf2c1a181..4856a40e5e7 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -1622,7 +1622,10 @@ _bfd_coff_get_external_symbols (bfd *abfd)
/* PR binutils/17512: Do not even try to load
a symbol table bigger than the entire file... */
if (size >= (bfd_size_type) bfd_get_size (abfd))
+ {
+ fprintf (stderr, "XXX SIZE FAIL 1\n");
return FALSE;
+ }
syms = bfd_malloc (size);
if (syms == NULL)
@@ -1757,11 +1760,12 @@ coff_get_normalized_symtab (bfd *abfd)
return obj_raw_syments (abfd);
size = obj_raw_syment_count (abfd);
- if (size == 0)
- return NULL;
/* PR binutils/17512: Do not even try to load
- a symbol table bigger than the entire file... */
- if (size >= (bfd_size_type) bfd_get_size (abfd))
+ a symbol table bigger than the entire file...
+ Note - we do not fail on a size of 0. Linker created
+ bfds can have this property and they are not corrupt. */
+ if (size >= (bfd_size_type) bfd_get_size (abfd)
+ && bfd_get_size (abfd) > 0)
return NULL;
size *= sizeof (combined_entry_type);
diff --git a/bfd/compress.c b/bfd/compress.c
index 683156209a7..20eef952826 100644
--- a/bfd/compress.c
+++ b/bfd/compress.c
@@ -177,14 +177,6 @@ bfd_get_full_section_contents (bfd *abfd, sec_ptr sec, bfd_byte **ptr)
switch (sec->compress_status)
{
case COMPRESS_SECTION_NONE:
- /* PR binutils/17512: Avoid malloc or file reading errors due to
- ridiculous section sizes. But ignore linker created objects
- and bfds with no contents (yet). */
- if (bfd_get_size (abfd) > 0
- && (sec->flags & SEC_LINKER_CREATED) == 0
- && sz > (bfd_size_type) bfd_get_size (abfd))
- return FALSE;
-
if (p == NULL)
{
p = (bfd_byte *) bfd_malloc (sz);