Fix a illegal memory access fault when parsing a corrupt MIPS option section using readelf.

PR 24243
	* readelf.c (process_mips_specific): Check for an options section
	that is too small to even contain a single option.
This commit is contained in:
Nick Clifton
2019-02-20 17:03:47 +00:00
parent 8d18bf796b
commit 7fc0c668f2
2 changed files with 9 additions and 0 deletions

View File

@@ -2,6 +2,9 @@
PR 24242
* readelf.c (print_ia64_vms_note): Harden against corrupt notes.
PR 24243
* readelf.c (process_mips_specific): Check for an options section
that is too small to even contain a single option.
2019-02-20 Alan Modra <amodra@gmail.com>

View File

@@ -16187,6 +16187,12 @@ process_mips_specific (Filedata * filedata)
error (_("No MIPS_OPTIONS header found\n"));
return FALSE;
}
/* PR 24243 */
if (sect->sh_size < sizeof (* eopt))
{
error (_("The MIPS options section is too small.\n"));
return FALSE;
}
eopt = (Elf_External_Options *) get_data (NULL, filedata, options_offset, 1,
sect->sh_size, _("options"));