Signed-off-by: Mark Wielaard <[email protected]> --- src/ChangeLog | 5 +++++ src/readelf.c | 2 ++ 2 files changed, 7 insertions(+)
diff --git a/src/ChangeLog b/src/ChangeLog index a4f42e4..7247ea9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2014-12-15 Mark Wielaard <[email protected]> + + * readelf.c (print_debug_line_section): Check there is enough room + for DW_LNE_set_address argument. + 2014-12-14 Mark Wielaard <[email protected]> * elflint.c (check_attributes): Call get_uleb128 with end pointer. diff --git a/src/readelf.c b/src/readelf.c index 51ce020..faaa6d1 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -6609,6 +6609,8 @@ print_debug_line_section (Dwfl_Module *dwflmod, Ebl *ebl, GElf_Ehdr *ehdr, case DW_LNE_set_address: op_index = 0; + if (unlikely ((size_t) (lineendp - linep) < address_size)) + goto invalid_unit; if (address_size == 4) address = read_4ubyte_unaligned_inc (dbg, linep); else -- 1.8.3.1
