Fix few memory leaks in cgcreate tools, as pointed out by Steve Grub.

Signed-off-by: Jan Safranek <[email protected]>
---

 src/tools/cgcreate.c |   25 ++++++++++++++++---------
 1 files changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/tools/cgcreate.c b/src/tools/cgcreate.c
index 8a728ed..a2a21b2 100644
--- a/src/tools/cgcreate.c
+++ b/src/tools/cgcreate.c
@@ -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;
                }
        }
 


------------------------------------------------------------------------------
Centralized Desktop Delivery: Dell and VMware Reference Architecture
Simplifying enterprise desktop deployment and management using
Dell EqualLogic storage and VMware View: A highly scalable, end-to-end
client virtualization framework. Read more!
http://p.sf.net/sfu/dell-eql-dev2dev
_______________________________________________
Libcg-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libcg-devel

Reply via email to