aboutsummaryrefslogtreecommitdiff
path: root/bfd/mach-o.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-07-27 12:04:50 +0100
committerNick Clifton <nickc@redhat.com>2017-07-27 12:04:50 +0100
commit8bdf0be19d2777565a8b1c88347f65d6a4b8c5fc (patch)
tree3837617a722ce5ec26a0e22c0e21169f47b5af0e /bfd/mach-o.c
parent63d4980d60dd137996fa282ae1df2e3fcb4519ee (diff)
Fix address violation issues encountered when parsing corrupt binaries.
PR 21840 * mach-o.c (bfd_mach_o_read_symtab_strtab): Fail if the symtab size is -1. * nlmcode.h (nlm_swap_auxiliary_headers_in): Replace assertion with error return. * section.c (bfd_make_section_with_flags): Fail if the name or bfd are NULL. * vms-alpha.c (bfd_make_section_with_flags): Correct computation of end pointer. (evax_bfd_print_emh): Check for invalid string lengths.
Diffstat (limited to 'bfd/mach-o.c')
-rw-r--r--bfd/mach-o.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/bfd/mach-o.c b/bfd/mach-o.c
index 1807391d51..9fe6326a29 100644
--- a/bfd/mach-o.c
+++ b/bfd/mach-o.c
@@ -3749,6 +3749,9 @@ bfd_mach_o_read_symtab_strtab (bfd *abfd)
}
else
{
+ /* See PR 21840 for a reproducer. */
+ if ((sym->strsize + 1) == 0)
+ return FALSE;
sym->strtab = bfd_alloc (abfd, sym->strsize + 1);
if (sym->strtab == NULL)
return FALSE;