diff options
| author | Mark Wielaard <[email protected]> | 2014-12-12 16:43:04 +0100 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2014-12-17 16:35:56 +0100 |
| commit | 9202665816763fad8524dd78a664dbcaa157b8d4 (patch) | |
| tree | a895bade664b2701de624f57d5c79a69ebcd7004 /libdw/libdw_findcu.c | |
| parent | 274cbda6f5d5b7c57d488edaeb55876ba8705db3 (diff) | |
libdw: Make sure all attributes come with a (fake) CU for bound checks.
All attributes now have a reference to a (fake) CU that has startp and
endp set to the data section where the form data comes from. Use that
for bounds checking in __libdw_form_val_len and dwarf_formblock to make
sure data read doesn't overflow any data section. Remove libdwP.h cu_data
and use cu startp and endp directly where appropriate.
Signed-off-by: Mark Wielaard <[email protected]>
Diffstat (limited to 'libdw/libdw_findcu.c')
| -rw-r--r-- | libdw/libdw_findcu.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/libdw/libdw_findcu.c b/libdw/libdw_findcu.c index c783ff8a..d8da2e38 100644 --- a/libdw/libdw_findcu.c +++ b/libdw/libdw_findcu.c @@ -119,9 +119,8 @@ __libdw_intern_next_unit (dbg, debug_types) if (debug_types) Dwarf_Sig8_Hash_insert (&dbg->sig8_hash, type_sig8, newp); - void *buf = cu_data (newp)->d_buf; - newp->startp = buf + newp->start; - newp->endp = buf + newp->end; + newp->startp = data->d_buf + newp->start; + newp->endp = data->d_buf + newp->end; /* Add the new entry to the search tree. */ if (tsearch (newp, tree, findcu_cb) == NULL) |
