]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
cmd: use goto for cleanup in lxc-usernsexec 2549/head
authorChristian Brauner <christian.brauner@ubuntu.com>
Mon, 20 Aug 2018 12:24:55 +0000 (14:24 +0200)
committerChristian Brauner <christian.brauner@ubuntu.com>
Mon, 20 Aug 2018 13:16:33 +0000 (15:16 +0200)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/cmd/lxc_usernsexec.c

index 4909a93244ba3b69b05a3e56e971fb1ccb6b6d5c..bdfef0fb26cb5beeee327f426221e1fa409df1d6 100644 (file)
@@ -196,14 +196,14 @@ static int parse_map(char *map)
  */
 static int read_default_map(char *fnam, int which, char *user)
 {
-       int ret;
        size_t len;
        char *p1, *p2;
        FILE *fin;
-       struct id_map *newmap;
+       int ret = -1;
        size_t sz = 0;
        char *line = NULL;
        struct lxc_list *tmp = NULL;
+       struct id_map *newmap = NULL;
 
        fin = fopen(fnam, "r");
        if (!fin)
@@ -223,46 +223,38 @@ static int read_default_map(char *fnam, int which, char *user)
                        continue;
 
                newmap = malloc(sizeof(*newmap));
-               if (!newmap) {
-                       fclose(fin);
-                       free(line);
-                       return -1;
-               }
+               if (!newmap)
+                       goto on_error;
 
                ret = lxc_safe_ulong(p1 + 1, &newmap->hostid);
-               if (ret < 0) {
-                       fclose(fin);
-                       free(line);
-                       return -1;
-               }
+               if (ret < 0)
+                       goto on_error;
 
                ret = lxc_safe_ulong(p2 + 1, &newmap->range);
-               if (ret < 0) {
-                       fclose(fin);
-                       free(line);
-                       return -1;
-               }
+               if (ret < 0)
+                       goto on_error;
 
                newmap->nsid = 0;
                newmap->idtype = which;
 
+               ret = -1;
                tmp = malloc(sizeof(*tmp));
-               if (!tmp) {
-                       fclose(fin);
-                       free(line);
-                       free(newmap);
-                       return -1;
-               }
+               if (!tmp)
+                       goto on_error;
 
                tmp->elem = newmap;
                lxc_list_add_tail(&active_map, tmp);
                break;
        }
 
-       free(line);
+       ret = 0;
+
+on_error:
        fclose(fin);
+       free(line);
+       free(newmap);
 
-       return 0;
+       return ret;
 }
 
 static int find_default_map(void)