From 896ca0981329171639b1fe0b934393a79ef4fdfb Mon Sep 17 00:00:00 2001 From: Nick Clifton Date: Mon, 5 Jan 2015 23:13:50 +0000 Subject: More fixes for invalid memory accesses triggered by fuzzed binaries. PR binutils/17512 * nm.c (print_symbol): Add 'is_synthetic' parameter. Use it to help initialize the info.elfinfo field. (print_size_symbols): Add 'synth_count' parameter. Use it to set the is_synthetic parameter when calling print_symbol. (print_symbols): Likewise. (display_rel_file): Pass synth_count to printing function. (display_archive): Break loop if the last archive displayed matches the current archive. * size.c (display_archive): Likewise. * archive.c (do_slurp_bsd_armap): Make sure that the parsed sized is at least big enough for the header to be read. * elf32-i386.c (elf_i386_get_plt_sym_val): Skip unknown relocs. * mach-o.c (bfd_mach_o_get_synthetic_symtab): Add range checks. (bfd_mach_o_read_command): Prevetn duplicate error messages about unrecognized commands. * syms.c (_bfd_stab_section_find_nearest_line): Add range checks when indexing into the string table. --- binutils/size.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'binutils/size.c') diff --git a/binutils/size.c b/binutils/size.c index 1035f2b..465603f 100644 --- a/binutils/size.c +++ b/binutils/size.c @@ -365,7 +365,14 @@ display_archive (bfd *file) display_bfd (arfile); if (last_arfile != NULL) - bfd_close (last_arfile); + { + bfd_close (last_arfile); + + /* PR 17512: file: a244edbc. */ + if (last_arfile == arfile) + return; + } + last_arfile = arfile; } -- cgit v1.1