aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-01-09 09:27:46 +0000
committerNick Clifton <nickc@redhat.com>2017-01-09 09:27:46 +0000
commit98f02962fefbacf1b805e93fb7bddeb58ec6ff70 (patch)
tree727640a8947f5d8f1fa1dd13572adfa1cebad15d
parent011561117eeaff00862eb5f465c3470f29e8a9a9 (diff)
downloadbinutils-98f02962fefbacf1b805e93fb7bddeb58ec6ff70.zip
binutils-98f02962fefbacf1b805e93fb7bddeb58ec6ff70.tar.gz
binutils-98f02962fefbacf1b805e93fb7bddeb58ec6ff70.tar.bz2
Improve objdump's behaviour when it encounters a corrupt binary with an excessively large symbol table.
PR binutils/21013 * coffgen.c (_bfd_coff_get_external_symbols): Generate an error message if there are too many symbols to load.
-rw-r--r--bfd/ChangeLog6
-rw-r--r--bfd/coffgen.c7
2 files changed, 12 insertions, 1 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index f238d86..933feba 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,9 @@
+2017-01-09 Nick Clifton <nickc@redhat.com>
+
+ PR binutils/21013
+ * coffgen.c (_bfd_coff_get_external_symbols): Generate an error
+ message if there are too many symbols to load.
+
2017-01-04 James Clarke <jrtc27@jrtc27.com>
* elf64-alpha.c (elf64_alpha_relax_opt_call): Don't set tsec_free
diff --git a/bfd/coffgen.c b/bfd/coffgen.c
index d2cc591..5a61f6d 100644
--- a/bfd/coffgen.c
+++ b/bfd/coffgen.c
@@ -1643,7 +1643,12 @@ _bfd_coff_get_external_symbols (bfd *abfd)
syms = bfd_malloc (size);
if (syms == NULL)
- return FALSE;
+ {
+ /* PR 21013: Provide an error message when the alloc fails. */
+ _bfd_error_handler (_("%B: Not enough memory to allocate space for %lu symbols"),
+ abfd, size);
+ return FALSE;
+ }
if (bfd_seek (abfd, obj_sym_filepos (abfd), SEEK_SET) != 0
|| bfd_bread (syms, size, abfd) != size)