chiark / gitweb /
shared: free dt (temporary dir name) on fail
authorVáclav Pavlín <vpavlin@redhat.com>
Wed, 27 Mar 2013 14:16:37 +0000 (15:16 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 27 Mar 2013 16:01:44 +0000 (12:01 -0400)
[zj: modified to not to try to rmdir() dir we haven't created.]

src/shared/util.c

index 0444cf4..8fa01fa 100644 (file)
@@ -5708,7 +5708,7 @@ int create_tmp_dir(char template[], char** dir_name) {
         dt = strjoin(d, "/tmp", NULL);
         if (!dt) {
                 r = log_oom();
-                goto fail2;
+                goto fail3;
         }
 
         umask(0000);
@@ -5716,7 +5716,7 @@ int create_tmp_dir(char template[], char** dir_name) {
         if (r) {
                 log_error("Can't create directory %s: %m", dt);
                 r = -errno;
-                goto fail1;
+                goto fail2;
         }
         log_debug("Created temporary directory %s", dt);
 
@@ -5734,6 +5734,8 @@ int create_tmp_dir(char template[], char** dir_name) {
 fail1:
         rmdir(dt);
 fail2:
+        free(dt);
+fail3:
         rmdir(template);
         return r;
 }