summaryrefslogtreecommitdiffstats
path: root/libdw/dwarf_child.c
diff options
context:
space:
mode:
authorMark Wielaard <[email protected]>2011-04-26 17:15:28 +0200
committerMark Wielaard <[email protected]>2011-04-26 17:15:28 +0200
commitf4c39c7ccba57bcc71ab92760f4194b3e4667bb7 (patch)
tree2c05ab56dcd010ea6e15e2d9af717e2187d2e52b /libdw/dwarf_child.c
parented52618203ac78179e3a0cf36db5bdca8958da1d (diff)
libdw: Sanity check end of section against cu_data () of die->cu.
A Dwarf_CU can come from either the debug_info compile unit or a debug_type type unit section. Use the correct one for sanity checking whether we have a truncated section.
Diffstat (limited to 'libdw/dwarf_child.c')
-rw-r--r--libdw/dwarf_child.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/libdw/dwarf_child.c b/libdw/dwarf_child.c
index 1ec3704e..0c2df004 100644
--- a/libdw/dwarf_child.c
+++ b/libdw/dwarf_child.c
@@ -177,13 +177,13 @@ dwarf_child (die, result)
/* RESULT can be the same as DIE. So preserve what we need. */
struct Dwarf_CU *cu = die->cu;
+ Elf_Data *cu_sec = cu_data (cu);
/* It's kosher (just suboptimal) to have a null entry first thing (7.5.3).
So if this starts with ULEB128 of 0 (even with silly encoding of 0),
it is a kosher null entry and we do not really have any children. */
const unsigned char *code = addr;
- const unsigned char *endp = (cu->dbg->sectiondata[IDX_debug_info]->d_buf
- + cu->dbg->sectiondata[IDX_debug_info]->d_size);
+ const unsigned char *endp = (cu_sec->d_buf + cu_sec->d_size);
while (1)
{
if (unlikely (code >= endp)) /* Truncated section. */