[pulseaudio-discuss] [PATCH] augment-properties: fix a memory leak
Tanu Kaskinen
tanuk at iki.fi
Wed Dec 6 23:22:50 UTC 2017
On Thu, 2017-12-07 at 04:46 +0530, Arun Raghavan wrote:
>
> On Thu, 7 Dec 2017, at 04:09 AM, Tanu Kaskinen wrote:
> > If the desktop file is not found, fn was not being freed after the last
> > loop iteration.
> >
> > CID: 1462477
> > ---
> > src/modules/module-augment-properties.c | 4 +++-
> > 1 file changed, 3 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/modules/module-augment-properties.c
> > b/src/modules/module-augment-properties.c
> > index f0584328d..4c38e7418 100644
> > --- a/src/modules/module-augment-properties.c
> > +++ b/src/modules/module-augment-properties.c
> > @@ -140,6 +140,7 @@ static char * find_desktop_file_in_dir(struct rule
> > *r, const char *desktop_file_
> > if (stat(fn, st) == 0) {
> > return fn;
> > } else {
> > + pa_xfree(fn);
> > #ifdef DT_DIR
> > DIR *desktopfiles_dir;
> > struct dirent *dir;
> > @@ -152,13 +153,14 @@ static char * find_desktop_file_in_dir(struct rule
> > *r, const char *desktop_file_
> > || pa_streq(dir->d_name, ".."))
> > continue;
> >
> > - pa_xfree(fn);
> > fn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s" PA_PATH_SEP
> > "%s.desktop", desktop_file_dir, dir->d_name,
> > r->process_name);
> >
> > if (stat(fn, st) == 0) {
> > closedir(desktopfiles_dir);
> > return fn;
> > }
> > +
> > + pa_xfree(fn);
> > }
> > closedir(desktopfiles_dir);
> > }
> > --
>
> Looks good.
I now noticed that this causes a compiler warning, because the first
pa_xfree(fn) call happens before variable declarations. I'll make
another version.
--
Tanu
https://www.patreon.com/tanuk
More information about the pulseaudio-discuss
mailing list