Hi, dwfl_addrsegment (), dwfl_addrmodule () and anything that uses them don't set an error when the given address is out of range. Which means that if they fail and you use dwfl_errmsg () to generate an error message it will seem to indicate nothing was wrong. This affects such things like dwfl_addrdie () and even dwfl_validate_address () (which only sets an error if the addr + offset is invalid, but not if addr itself is).
2009-07-16 Mark Wielaard <[email protected]> * segment.c (dwfl_addrsegment): Set DWFL_E_ADDR_OUTOFRANGE on error. Makes sense? Thanks, Mark
>From 60a79c87babdd1fbdcaea64754a6374352789461 Mon Sep 17 00:00:00 2001 From: Mark Wielaard <[email protected]> Date: Thu, 16 Jul 2009 17:57:22 +0200 Subject: [PATCH] dwfl_addrsegment set DWFL_E_ADDR_OUTOFRANGE on error. --- libdwfl/ChangeLog | 4 ++++ libdwfl/segment.c | 2 ++ 2 files changed, 6 insertions(+), 0 deletions(-) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 624f59b..56c3ab4 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,7 @@ +2009-07-16 Mark Wielaard <[email protected]> + + * segment.c (dwfl_addrsegment): Set DWFL_E_ADDR_OUTOFRANGE on error. + 2009-07-08 Roland McGrath <[email protected]> * dwfl_module_dwarf_cfi.c: New file. diff --git a/libdwfl/segment.c b/libdwfl/segment.c index 36c850f..d69e60a 100644 --- a/libdwfl/segment.c +++ b/libdwfl/segment.c @@ -264,6 +264,8 @@ dwfl_addrsegment (Dwfl *dwfl, Dwarf_Addr address, Dwfl_Module **mod) if (likely (idx >= 0)) /* Translate internal segment table index to user segment index. */ idx = dwfl->lookup_segndx[idx]; + else + __libdwfl_seterrno (DWFL_E_ADDR_OUTOFRANGE); return idx; } -- 1.6.3.3
_______________________________________________ elfutils-devel mailing list [email protected] https://fedorahosted.org/mailman/listinfo/elfutils-devel
