libdwfl: Fix memory leak in cu.c on bad DWARF.
authorMark Wielaard <mjw@redhat.com>
Thu, 12 Sep 2013 14:49:25 +0000 (16:49 +0200)
committerMark Wielaard <mjw@redhat.com>
Thu, 12 Sep 2013 14:50:33 +0000 (16:50 +0200)
If libdw dwarf_offdie fails free cu structure.

Signed-off-by: Mark Wielaard <mjw@redhat.com>
libdwfl/ChangeLog
libdwfl/cu.c

index d325475..4d119fd 100644 (file)
@@ -1,5 +1,9 @@
 2013-09-12  Mark Wielaard  <mjw@redhat.com>
 
+       * cu.c (intern_cu): If dwarf_offdie fails free cu.
+
+2013-09-12  Mark Wielaard  <mjw@redhat.com>
+
        * linux-proc-maps.c (proc_maps_report): Don't fclose FILE in
        bad_report.
 
index 18fc206..40b0201 100644 (file)
@@ -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)