]> 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>
Tue, 12 Dec 2017 10:55:55 +0000 (11:55 +0100)
free allocated memory

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

index 2365365e58b92363daa4591d95aa0a3899987450..bb136d4cb176452d0c4bb03f2ec641eed246c196 100644 (file)
@@ -1120,14 +1120,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;
        }
@@ -1162,12 +1164,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;
@@ -1214,6 +1220,7 @@ fail:
        close(criuout[0]);
        close(criuout[1]);
        rmdir(opts->directory);
+       free(criu_version);
        return false;
 }