]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
coverity: #1425858
authorChristian Brauner <christian.brauner@ubuntu.com>
Sat, 9 Dec 2017 18:59:11 +0000 (19:59 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Sun, 17 Dec 2017 15:34:03 +0000 (16:34 +0100)
free allocated memory

Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/criu.c

index d4aef39e9a448f34dc44f4f3e5728a93429811f0..3b542f599b0f067f6a29976a6d962ae88f57986a 100644 (file)
@@ -1118,14 +1118,16 @@ static int save_tty_major_minor(char *directory, struct lxc_container *c, char *
 /* do one of either predump or a regular dump */
 static bool do_dump(struct lxc_container *c, char *mode, struct migrate_opts *opts)
 {
+       int ret;
        pid_t pid;
-       char *criu_version = NULL;
        int criuout[2];
+       char *criu_version = NULL;
 
        if (!criu_ok(c, &criu_version))
                return false;
 
-       if (pipe(criuout) < 0) {
+       ret = pipe(criuout);
+       if (ret < 0) {
                SYSERROR("pipe() failed");
                return false;
        }
@@ -1160,12 +1162,16 @@ static bool do_dump(struct lxc_container *c, char *mode, struct migrate_opts *op
                os.console_name = c->lxc_conf->console.path;
                os.criu_version = criu_version;
 
-               if (save_tty_major_minor(opts->directory, c, os.tty_id, sizeof(os.tty_id)) < 0)
-                       exit(1);
+               ret = save_tty_major_minor(opts->directory, c, os.tty_id, sizeof(os.tty_id));
+               if (ret < 0) {
+                       free(criu_version);
+                       exit(EXIT_FAILURE);
+               }
 
                /* exec_criu() returning is an error */
                exec_criu(&os);
-               exit(1);
+               free(criu_version);
+               exit(EXIT_FAILURE);
        } else {
                int status;
                ssize_t n;
@@ -1212,6 +1218,7 @@ fail:
        close(criuout[0]);
        close(criuout[1]);
        rmdir(opts->directory);
+       free(criu_version);
        return false;
 }