summaryrefslogtreecommitdiffstats
path: root/libdw/dwarf_dieoffset.c
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 /libdw/dwarf_dieoffset.c
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 'libdw/dwarf_dieoffset.c')
-rw-r--r--libdw/dwarf_dieoffset.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libdw/dwarf_dieoffset.c b/libdw/dwarf_dieoffset.c
index 8028f6dd..3a8e2cb6 100644
--- a/libdw/dwarf_dieoffset.c
+++ b/libdw/dwarf_dieoffset.c
@@ -38,8 +38,8 @@
Dwarf_Off
dwarf_dieoffset (Dwarf_Die *die)
{
- return (die == NULL
- ? ~0ul
+ return ((die == NULL || die->cu == NULL)
+ ? (Dwarf_Off) -1
: (Dwarf_Off) (die->addr - die->cu->startp + die->cu->start));
}
INTDEF(dwarf_dieoffset)