]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: fix potential leak in error codepath
authorMartin Kletzander <mkletzan@redhat.com>
Sun, 7 Sep 2014 18:07:49 +0000 (20:07 +0200)
committerMartin Kletzander <mkletzan@redhat.com>
Mon, 15 Sep 2014 07:49:34 +0000 (09:49 +0200)
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
src/util/virpidfile.c

index 19ec103ce85750cffe8f9c59eae6d9792434f3ff..dd29701a757a83bf6eeaf28cc2978aa7516f529f 100644 (file)
@@ -529,6 +529,9 @@ virPidFileConstructPath(bool privileged,
                         const char *progname,
                         char **pidfile)
 {
+    int ret = -1;
+    char *rundir = NULL;
+
     if (privileged) {
         /*
          * This is here just to allow calling this function with
@@ -542,29 +545,27 @@ virPidFileConstructPath(bool privileged,
         if (virAsprintf(pidfile, "%s/run/%s.pid", statedir, progname) < 0)
             goto cleanup;
     } else {
-        char *rundir = NULL;
         mode_t old_umask;
 
         if (!(rundir = virGetUserRuntimeDirectory()))
-            goto error;
+            goto cleanup;
 
         old_umask = umask(077);
         if (virFileMakePath(rundir) < 0) {
             umask(old_umask);
-            goto error;
+            goto cleanup;
         }
         umask(old_umask);
 
         if (virAsprintf(pidfile, "%s/%s.pid", rundir, progname) < 0) {
             VIR_FREE(rundir);
-            goto error;
+            goto cleanup;
         }
 
-        VIR_FREE(rundir);
     }
 
-    return 0;
-
- error:
-    return -1;
+    ret = 0;
+ cleanup:
+    VIR_FREE(rundir);
+    return ret;
 }