Prevent an address violation parsing corrupt DWARF information by fixing the test for an overlong debug line info structure.

PR 22059
	* dwarf2.c (decode_line_info): Fix test for an overlong line info
	structure.
This commit is contained in:
Nick Clifton 2017-09-01 11:20:51 +01:00
parent f8ad251375
commit 7e8b60085e
2 changed files with 9 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2017-09-01 Nick Clifton <nickc@redhat.com>
PR 22059
* dwarf2.c (decode_line_info): Fix test for an overlong line info
structure.
2017-09-01 Nick Clifton <nickc@redhat.com>
PR 22058

View File

@ -2096,12 +2096,12 @@ decode_line_info (struct comp_unit *unit, struct dwarf2_debug *stash)
offset_size = 8;
}
if (lh.total_length > stash->dwarf_line_size)
if (unit->line_offset + lh.total_length > stash->dwarf_line_size)
{
_bfd_error_handler
/* xgettext: c-format */
(_("Dwarf Error: Line info data is bigger (%#Lx) than the section (%#Lx)"),
lh.total_length, stash->dwarf_line_size);
(_("Dwarf Error: Line info data is bigger (%#Lx) than the space remaining in the section (%#Lx)"),
lh.total_length, stash->dwarf_line_size - unit->line_offset);
bfd_set_error (bfd_error_bad_value);
return NULL;
}