From aa02fb9028abcadaa18440b86b1ed085e029956c Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 31 May 2018 13:01:39 +0200 Subject: libdw: Don't crash on invalid die in dwarf_dieoffset. Add explicit test in get-units-invalid for dwarf_cuoffset and dwarf_dieoffset. Make sure dwarf_dieoffset returns (Dwarf_Off) -1 on failure. Signed-off-by: Mark Wielaard --- src/ChangeLog | 4 ++++ src/readelf.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/ChangeLog b/src/ChangeLog index f424fb7f..03ed5aab 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2018-05-31 Mark Wielaard + + * readelf.c (print_debug_units): Check offset against -1 not ~0ul. + 2018-05-29 Mark Wielaard * readelf.c (print_debug_loc_section): Handle GNU DebugFission list diff --git a/src/readelf.c b/src/readelf.c index 2ccbea5b..470a94eb 100644 --- a/src/readelf.c +++ b/src/readelf.c @@ -7588,7 +7588,7 @@ print_debug_units (Dwfl_Module *dwflmod, do { Dwarf_Off offset = dwarf_dieoffset (&dies[level]); - if (unlikely (offset == ~0ul)) + if (unlikely (offset == (Dwarf_Off) -1)) { if (!silent) error (0, 0, gettext ("cannot get DIE offset: %s"), -- cgit v1.2.3