]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
libcgroup: Check for NULL data structures in the wrappers
authorDhaval Giani <dhaval@linux.vnet.ibm.com>
Fri, 5 Sep 2008 18:53:13 +0000 (18:53 +0000)
committerDhaval Giani <dhaval@linux.vnet.ibm.com>
Fri, 5 Sep 2008 18:53:13 +0000 (18:53 +0000)
Don't want to have a segmentation fault for NULL data structures.
Just return an error to the caller.

Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com>
git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@177 4f4bb910-9a46-0410-90c8-c897d4f1cd53

wrapper.c

index c75552bb1b75296b81f079b716cdf3ace7a22190..b808f72dfa86a289e52face305188de9c2118eeb 100644 (file)
--- a/wrapper.c
+++ b/wrapper.c
@@ -41,6 +41,9 @@ struct cgroup_controller *cgroup_add_controller(struct cgroup *cgroup,
        int i;
        struct cgroup_controller *controller;
 
+       if (!cgroup)
+               return NULL;
+
        /*
         * Still not sure how to handle the failure here.
         */
@@ -101,6 +104,9 @@ int cgroup_add_value_string(struct cgroup_controller *controller,
        int i;
        struct control_value *cntl_value;
 
+       if (!controller)
+               return ECGINVAL;
+
        if (controller->index >= CG_VALUE_MAX)
                return ECGMAXVALUESEXCEEDED;
 
@@ -129,6 +135,9 @@ int cgroup_add_value_int64(struct cgroup_controller *controller,
        unsigned ret;
        struct control_value *cntl_value;
 
+       if (!controller)
+               return ECGINVAL;
+
        if (controller->index >= CG_VALUE_MAX)
                return ECGMAXVALUESEXCEEDED;
 
@@ -164,6 +173,9 @@ int cgroup_add_value_uint64(struct cgroup_controller *controller,
        unsigned ret;
        struct control_value *cntl_value;
 
+       if (!controller)
+               return ECGINVAL;
+
        if (controller->index >= CG_VALUE_MAX)
                return ECGMAXVALUESEXCEEDED;
 
@@ -198,6 +210,9 @@ int cgroup_add_value_bool(struct cgroup_controller *controller,
        unsigned ret;
        struct control_value *cntl_value;
 
+       if (!controller)
+               return ECGINVAL;
+
        if (controller->index >= CG_VALUE_MAX)
                return ECGMAXVALUESEXCEEDED;
 
@@ -323,6 +338,9 @@ struct cgroup_controller *cgroup_get_controller(struct cgroup *cgroup,
        int i;
        struct cgroup_controller *cgc;
 
+       if (!cgroup)
+               return NULL;
+
        for (i = 0; i < cgroup->index; i++) {
                cgc = cgroup->controller[i];
 
@@ -338,6 +356,9 @@ int cgroup_get_value_string(struct cgroup_controller *controller,
 {
        int i;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];
 
@@ -360,6 +381,9 @@ int cgroup_set_value_string(struct cgroup_controller *controller,
 {
        int i;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];
                if (!strcmp(val->name, name)) {
@@ -376,6 +400,9 @@ int cgroup_get_value_int64(struct cgroup_controller *controller,
 {
        int i;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];
 
@@ -397,6 +424,9 @@ int cgroup_set_value_int64(struct cgroup_controller *controller,
        int i;
        unsigned ret;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];
 
@@ -419,6 +449,9 @@ int cgroup_get_value_uint64(struct cgroup_controller *controller,
 {
        int i;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];
                if (!strcmp(val->name, name)) {
@@ -439,6 +472,9 @@ int cgroup_set_value_uint64(struct cgroup_controller *controller,
        int i;
        unsigned ret;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];
 
@@ -461,6 +497,9 @@ int cgroup_get_value_bool(struct cgroup_controller *controller,
 {
        int i;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];
 
@@ -487,6 +526,9 @@ int cgroup_set_value_bool(struct cgroup_controller *controller,
        int i;
        unsigned ret;
 
+       if (!controller)
+               return ECGINVAL;
+
        for (i = 0; i < controller->index; i++) {
                struct control_value *val = controller->values[i];