diff options
author | Tanu Kaskinen <tanuk@iki.fi> | 2017-12-07 01:26:29 +0200 |
---|---|---|
committer | Tanu Kaskinen <tanuk@iki.fi> | 2017-12-08 08:47:10 +0200 |
commit | e5588e08a132f0c82efc6b4e53889900e1ed5035 (patch) | |
tree | e34464baa15302088a31fbb3305c5d1112ab4fda | |
parent | c8bd93c5a764940abd280901a2b56af18ece24b0 (diff) | |
download | pulseaudio-e5588e08a132f0c82efc6b4e53889900e1ed5035.tar.gz |
augment-properties: fix a memory leak
If the desktop file is not found, fn was not being freed after the last
loop iteration.
CID: 1462477
-rw-r--r-- | src/modules/module-augment-properties.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/modules/module-augment-properties.c b/src/modules/module-augment-properties.c index f0584328d..3eb503aa0 100644 --- a/src/modules/module-augment-properties.c +++ b/src/modules/module-augment-properties.c @@ -137,10 +137,13 @@ static char * find_desktop_file_in_dir(struct rule *r, const char *desktop_file_ pa_assert(st); fn = pa_sprintf_malloc("%s" PA_PATH_SEP "%s.desktop", desktop_file_dir, r->process_name); - if (stat(fn, st) == 0) { + if (stat(fn, st) == 0) return fn; - } else { + + pa_xfree(fn); + #ifdef DT_DIR + { DIR *desktopfiles_dir; struct dirent *dir; @@ -152,18 +155,20 @@ 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); } -#endif } +#endif + return NULL; } |