]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
Fix memory leaks in cgreate
authorJan Safranek <jsafrane@redhat.com>
Tue, 16 Nov 2010 11:11:14 +0000 (12:11 +0100)
committerDhaval Giani <dhaval.giani@gmail.com>
Tue, 16 Nov 2010 15:39:16 +0000 (16:39 +0100)
Fix few memory leaks in cgcreate tools, as pointed out by Steve Grub.

Signed-off-by: Jan Safranek <jsafrane@redhat.com>
Acked-by: Dhaval Giani <dhaval.giani@gmail.com>
Signed-off-by: Dhaval Giani <dhaval.giani@gmail.com>
src/tools/cgcreate.c

index 8a728ed1f0e4b7ad34e9cbd561f9d9fb00f7ce9b..a2a21b2bfae6f1a6feca03411e7608f3a6c6c859 100644 (file)
@@ -138,7 +138,8 @@ int main(int argc, char *argv[])
        cgroup_list = calloc(capacity, sizeof(struct cgroup_group_spec *));
        if (cgroup_list == NULL) {
                fprintf(stderr, "%s: out of memory\n", argv[0]);
-               return -1;
+               ret = -1;
+               goto err;
        }
 
        /* parse arguments */
@@ -147,7 +148,8 @@ int main(int argc, char *argv[])
                switch (c) {
                case 'h':
                        usage(0, argv[0]);
-                       return 0;
+                       ret = 0;
+                       goto err;
                case 'a':
                        /* set admin uid/gid */
                        if (optarg[0] == ':')
@@ -166,7 +168,8 @@ int main(int argc, char *argv[])
                                        fprintf(stderr, "%s: "
                                                "can't find uid of user %s.\n",
                                                argv[0], pwd_string);
-                                       return -1;
+                                       ret = -1;
+                                       goto err;
                                }
                        }
                        if (grp_string != NULL) {
@@ -177,7 +180,8 @@ int main(int argc, char *argv[])
                                        fprintf(stderr, "%s: "
                                                "can't find gid of group %s.\n",
                                                argv[0], grp_string);
-                                       return -1;
+                                       ret = -1;
+                                       goto err;
                                }
                        }
 
@@ -200,7 +204,8 @@ int main(int argc, char *argv[])
                                        fprintf(stderr, "%s: "
                                                "can't find uid of user %s.\n",
                                                argv[0], pwd_string);
-                                       return -1;
+                                       ret = -1;
+                                       goto err;
                                }
                        }
                        if (grp_string != NULL) {
@@ -211,7 +216,8 @@ int main(int argc, char *argv[])
                                        fprintf(stderr, "%s: "
                                                "can't find gid of group %s.\n",
                                                argv[0], grp_string);
-                                       return -1;
+                                       ret = -1;
+                                       goto err;
                                }
                        }
                        break;
@@ -222,7 +228,8 @@ int main(int argc, char *argv[])
                                        "cgroup controller and path"
                                        "parsing failed (%s)\n",
                                        argv[0], argv[optind]);
-                               return -1;
+                               ret = -1;
+                               goto err;
                        }
                        break;
                case 'd':
@@ -235,8 +242,8 @@ int main(int argc, char *argv[])
                        break;
                default:
                        usage(1, argv[0]);
-                       return -1;
-                       break;
+                       ret = -1;
+                       goto err;
                }
        }