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:
parent
f8ad251375
commit
7e8b60085e
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue