[PATCH] gdb/dwarf2read.c: Sanity check DW_AT_sibling values.
Tom Tromey
tromey@redhat.com
Mon Nov 4 15:57:00 GMT 2013
>>>>> "Will" == Will Newton <will.newton@linaro.org> writes:
Will> When reading objects with corrupt debug information it is possible that
Will> the sibling chain can form a loop, which leads to an infinite loop and
Will> memory exhaustion.
Will> Avoid this situation by disregarding and DW_AT_sibling values that point
Will> to a lower address than the current entry.
Thanks for doing this.
Will> + const gdb_byte *sibling_ptr = buffer + dwarf2_get_ref_die_offset (&attr).sect_off;
This line is too long, it should be split somewhere.
Will> + if (sibling_ptr < info_ptr)
Will> + complaint (&symfile_complaints,
Will> + _("DW_AT_sibling points backwards"));
I wonder whether the check should be "<=".
Will> + const gdb_byte *sibling_ptr = buffer + dwarf2_get_ref_die_offset (&attr).sect_off;
Also too long.
Tom
More information about the Gdb-patches
mailing list