libdwfl: Fix memory leak in dwfl_module_getsrc_file on invalid DWARF.
authorMark Wielaard <mjw@redhat.com>
Thu, 14 Apr 2016 19:53:33 +0000 (21:53 +0200)
committerMark Wielaard <mjw@redhat.com>
Thu, 14 Apr 2016 19:53:33 +0000 (21:53 +0200)
If we allocated the match results array ourselves, then free it when
we detect invalid DWARF and return an error.

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

index 60ed700..bdfc92f 100644 (file)
@@ -1,5 +1,10 @@
 2016-04-14  Mark Wielaard  <mjw@redhat.com>
 
+       * dwfl_module_getsrc_file.c (dwfl_module_getsrc_file): Free match
+       on invalid DWARF if we allocated it.
+
+2016-04-14  Mark Wielaard  <mjw@redhat.com>
+
        * linux-proc-maps.c (proc_maps_report): Free last_file on bad file
        mapping.
 
index 21a5915..4eaaeaf 100644 (file)
@@ -87,6 +87,8 @@ dwfl_module_getsrc_file (Dwfl_Module *mod,
 
          if (unlikely (line->file >= line->files->nfiles))
            {
+             if (*nsrcs == 0)
+               free (match);
              __libdwfl_seterrno (DWFL_E (LIBDW, DWARF_E_INVALID_DWARF));
              return -1;
            }