audioc: Fix memory leak in configfile_exists().
authorAndre Noll <maan@systemlinux.org>
Fri, 13 Jan 2012 22:54:08 +0000 (23:54 +0100)
committerAndre Noll <maan@systemlinux.org>
Sun, 5 Feb 2012 19:16:18 +0000 (20:16 +0100)
In case the config file does not exist, the function returns NULL
without freeing the config_file buffer.

This patch also makes config_file non-static. As configfile_exists()
is called at most once, it is pointless to have a static variable
there. The condition "if (!config_file)" is always true, so we can
get rid of the conditional alltogether.

audioc.c

index 64152ce09323bc9b458f38ff09272f94e949db38..0c0eea47985f7cd0343ea791709895b25c15d940 100644 (file)
--- a/audioc.c
+++ b/audioc.c
@@ -253,16 +253,15 @@ __noreturn static void print_completions(void)
 
 static char *configfile_exists(void)
 {
 
 static char *configfile_exists(void)
 {
-       static char *config_file;
+       char *config_file;
        struct stat statbuf;
        struct stat statbuf;
+       char *home = para_homedir();
 
 
-       if (!config_file) {
-               char *home = para_homedir();
-               config_file = make_message("%s/.paraslash/audioc.conf", home);
-               free(home);
-       }
+       config_file = make_message("%s/.paraslash/audioc.conf", home);
+       free(home);
        if (!stat(config_file, &statbuf))
                return config_file;
        if (!stat(config_file, &statbuf))
                return config_file;
+       free(config_file);
        return NULL;
 }
 
        return NULL;
 }