Fix memory access violations triggered by running dlltool on corrupt binaries.

PR binutils/17512
	* dlltool.c (identify_search_archive): If the last archive was the
	same as the current archive, terminate the loop.

	* pdp11.c (aout_get_external_symbols): Return false if there are
	no symbols.
This commit is contained in:
Nick Clifton 2015-01-27 11:30:15 +00:00
parent 20d79870f3
commit 37e3922eed
4 changed files with 24 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-01-27 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* pdp11.c (aout_get_external_symbols): Return false if there are
no symbols.
2015-01-26 Kuan-Lin Chen <kuanlinchentw@gmail.com>
* elf32-nds32.c (nds32_elf_pick_relax): Fix again setting.

View File

@ -1189,6 +1189,9 @@ aout_get_external_symbols (bfd *abfd)
count = exec_hdr (abfd)->a_syms / EXTERNAL_NLIST_SIZE;
/* PR 17512: file: 011f5a08. */
if (count == 0)
return FALSE;
#ifdef USE_MMAP
if (! bfd_get_file_window (abfd, obj_sym_filepos (abfd),
exec_hdr (abfd)->a_syms,

View File

@ -1,3 +1,9 @@
2015-01-27 Nick Clifton <nickc@redhat.com>
PR binutils/17512
* dlltool.c (identify_search_archive): If the last archive was the
same as the current archive, terminate the loop.
2015-01-23 Nick Clifton <nickc@redhat.com>
* nlmconv.c (powerpc_mangle_relocs): Fix build errors introduced

View File

@ -3589,7 +3589,15 @@ identify_search_archive (bfd * abfd,
}
if (last_arfile != NULL)
bfd_close (last_arfile);
{
bfd_close (last_arfile);
/* PR 17512: file: 8b2168d4. */
if (last_arfile == arfile)
{
last_arfile = NULL;
break;
}
}
last_arfile = arfile;
}