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 <[email protected]> --- libdwfl/ChangeLog | 5 +++++ libdwfl/dwfl_module_getsrc_file.c | 2 ++ 2 files changed, 7 insertions(+) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 60ed700..bdfc92f 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,5 +1,10 @@ 2016-04-14 Mark Wielaard <[email protected]> + * dwfl_module_getsrc_file.c (dwfl_module_getsrc_file): Free match + on invalid DWARF if we allocated it. + +2016-04-14 Mark Wielaard <[email protected]> + * linux-proc-maps.c (proc_maps_report): Free last_file on bad file mapping. diff --git a/libdwfl/dwfl_module_getsrc_file.c b/libdwfl/dwfl_module_getsrc_file.c index 21a5915..4eaaeaf 100644 --- a/libdwfl/dwfl_module_getsrc_file.c +++ b/libdwfl/dwfl_module_getsrc_file.c @@ -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; } -- 2.5.5
