[pulseaudio-discuss] [PATCH v2] augment-properties: fix a memory leak

Arun Raghavan arun at arunraghavan.net
Thu Dec 7 08:07:11 UTC 2017



On Thu, 7 Dec 2017, at 04:56 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 | 13 +++++++++----
>  1 file 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;
>  }
>  
> -- 

Looks good.

-- Arun


More information about the pulseaudio-discuss mailing list