diff options
| author | Mark Wielaard <[email protected]> | 2018-05-31 13:01:39 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2018-05-31 19:48:00 +0200 |
| commit | aa02fb9028abcadaa18440b86b1ed085e029956c (patch) | |
| tree | 30ca85ec66c4f0be7af59ddf9b8f81694d4b0ea5 /src | |
| parent | 7d6fe0a39f6ae5c516ffd63558e12b24297bf982 (diff) | |
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 <[email protected]>
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 4 | ||||
| -rw-r--r-- | src/readelf.c | 2 |
2 files changed, 5 insertions, 1 deletions
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 <[email protected]> + + * readelf.c (print_debug_units): Check offset against -1 not ~0ul. + 2018-05-29 Mark Wielaard <[email protected]> * 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"), |
