summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2018-05-31 13:01:39 +0200
committerMark Wielaard <[email protected]>2018-05-31 19:48:00 +0200
commitaa02fb9028abcadaa18440b86b1ed085e029956c (patch)
tree30ca85ec66c4f0be7af59ddf9b8f81694d4b0ea5 /src
parent7d6fe0a39f6ae5c516ffd63558e12b24297bf982 (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/ChangeLog4
-rw-r--r--src/readelf.c2
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"),