Avoid needless resource usage when processing a corrupt DWARF directory or file name table.

PR 22210
	* dwarf2.c (read_formatted_entries): Fail early if we know that
	the loop parsing data entries will overflow the end of the
	section.
This commit is contained in:
Nick Clifton 2017-09-26 14:37:47 +01:00
parent 281c444773
commit 30d0157a2a
2 changed files with 17 additions and 0 deletions

View File

@ -1,3 +1,10 @@
2017-09-26 Nick Clifton <nickc@redhat.com>
PR 22210
* dwarf2.c (read_formatted_entries): Fail early if we know that
the loop parsing data entries will overflow the end of the
section.
2017-09-26 Alan Modra <amodra@gmail.com>
PR 22209

View File

@ -1938,6 +1938,16 @@ read_formatted_entries (struct comp_unit *unit, bfd_byte **bufp,
return FALSE;
}
/* PR 22210. Paranoia check. Don't bother running the loop
if we know that we are going to run out of buffer. */
if (data_count > (bfd_vma) (buf_end - buf))
{
_bfd_error_handler (_("Dwarf Error: data count (%Lx) larger than buffer size."),
data_count);
bfd_set_error (bfd_error_bad_value);
return FALSE;
}
for (datai = 0; datai < data_count; datai++)
{
bfd_byte *format = format_header_data;