diff options
| author | Mark Wielaard <[email protected]> | 2013-09-12 16:49:25 +0200 |
|---|---|---|
| committer | Mark Wielaard <[email protected]> | 2013-09-12 16:50:33 +0200 |
| commit | ead7d1916789f1576550502d4bcf2a0f1d247463 (patch) | |
| tree | 15a5dd7a452c805e2b564d54c66fc77685193d16 | |
| parent | 18b2c67fa2a422c744efba0d4c9a8cb9ef423823 (diff) | |
libdwfl: Fix memory leak in cu.c on bad DWARF.
If libdw dwarf_offdie fails free cu structure.
Signed-off-by: Mark Wielaard <[email protected]>
| -rw-r--r-- | libdwfl/ChangeLog | 4 | ||||
| -rw-r--r-- | libdwfl/cu.c | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index d325475a..4d119fd9 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,5 +1,9 @@ 2013-09-12 Mark Wielaard <[email protected]> + * cu.c (intern_cu): If dwarf_offdie fails free cu. + +2013-09-12 Mark Wielaard <[email protected]> + * linux-proc-maps.c (proc_maps_report): Don't fclose FILE in bad_report. diff --git a/libdwfl/cu.c b/libdwfl/cu.c index 18fc2060..40b0201c 100644 --- a/libdwfl/cu.c +++ b/libdwfl/cu.c @@ -204,7 +204,10 @@ intern_cu (Dwfl_Module *mod, Dwarf_Off cuoff, struct dwfl_cu **result) /* XXX use non-searching lookup */ Dwarf_Die *die = INTUSE(dwarf_offdie) (mod->dw, cuoff, &cu->die); if (die == NULL) - return DWFL_E_LIBDW; + { + free (cu); + return DWFL_E_LIBDW; + } assert (die == &cu->die); struct dwfl_cu **newvec = realloc (mod->cu, ((mod->ncu + 1) |
