mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-24 12:35:55 +08:00
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:
parent
281c444773
commit
30d0157a2a
@ -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
|
||||
|
10
bfd/dwarf2.c
10
bfd/dwarf2.c
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user