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 /libdw/dwarf_dieoffset.c | |
| 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 'libdw/dwarf_dieoffset.c')
| -rw-r--r-- | libdw/dwarf_dieoffset.c | 4 |
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) |
