Blame SOURCES/libcgroup-0.40.rc1-coverity.patch

da3e87
diff -upr libcgroup-0.40.rc1.orig/src/api.c libcgroup-0.40.rc1/src/api.c
da3e87
--- libcgroup-0.40.rc1.orig/src/api.c	2013-08-27 18:20:40.399333000 +0200
da3e87
+++ libcgroup-0.40.rc1/src/api.c	2013-08-27 19:34:07.569670729 +0200
da3e87
@@ -1003,6 +1003,10 @@ int cgroup_init(void)
da3e87
 
da3e87
 		if (mntopt) {
da3e87
 			mntopt = strtok_r(mntopt, ",", &strtok_buffer);
da3e87
+			if (!mntopt) {
da3e87
+				continue;
da3e87
+			}
da3e87
+
da3e87
 			/*
da3e87
 			 * Check if it is a duplicate
da3e87
 			 */
da3e87
@@ -2719,10 +2723,10 @@ char *cgroup_copy_with_slash(char *input
da3e87
 	int len = strlen(input);
da3e87
 
da3e87
 	/* if input does not end with '/', allocate one more space for it */
da3e87
-	if ((input[len-2]) != '/')
da3e87
+	if ((input[len-1]) != '/')
da3e87
 		len = len+1;
da3e87
 
da3e87
-	output = (char *)malloc(sizeof(char)*(len));
da3e87
+	output = (char *)malloc(sizeof(char)*(len + 1));
da3e87
 	if (output == NULL)
da3e87
 		return NULL;
da3e87
 
da3e87
@@ -2796,7 +2800,6 @@ static int cgroup_create_template_group(
da3e87
 	if (group_name == NULL) {
da3e87
 		ret = ECGOTHER;
da3e87
 		last_errno = errno;
da3e87
-		free(template_name);
da3e87
 		goto end;
da3e87
 	}
da3e87
 
da3e87
@@ -3318,7 +3321,7 @@ int cgroup_get_current_controller_path(p
da3e87
 		}
da3e87
 
da3e87
 		token = strtok_r(controllers, ",", &savedptr);
da3e87
-		do {
da3e87
+		while (token) {
da3e87
 			if (strncmp(controller, token, strlen(controller) + 1)
da3e87
 								== 0) {
da3e87
 				*current_path = strdup(cgroup_path);
da3e87
@@ -3331,7 +3334,7 @@ int cgroup_get_current_controller_path(p
da3e87
 				goto done;
da3e87
 			}
da3e87
 			token = strtok_r(NULL, ",", &savedptr);
da3e87
-		} while (token);
da3e87
+		}
da3e87
 	}
da3e87
 
da3e87
 done:
da3e87
diff -upr libcgroup-0.40.rc1.orig/src/config.c libcgroup-0.40.rc1/src/config.c
da3e87
--- libcgroup-0.40.rc1.orig/src/config.c	2013-05-21 15:36:04.000000000 +0200
da3e87
+++ libcgroup-0.40.rc1/src/config.c	2013-08-27 19:31:54.193828164 +0200
da3e87
@@ -313,7 +313,7 @@ int config_group_task_perm(char *perm_ty
da3e87
 	long val = atoi(value);
da3e87
 	char buffer[CGROUP_BUFFER_LEN];
da3e87
 	struct cgroup *config_cgroup;
da3e87
-	int table_index;
da3e87
+	int table_index, ret;
da3e87
 
da3e87
 	switch (flag) {
da3e87
 	case CGROUP:
da3e87
@@ -357,10 +357,10 @@ int config_group_task_perm(char *perm_ty
da3e87
 			if (!group)
da3e87
 				goto group_task_error;
da3e87
 
da3e87
-			getgrnam_r(value, group, buffer,
da3e87
+			ret = getgrnam_r(value, group, buffer,
da3e87
 					CGROUP_BUFFER_LEN, &group_buffer);
da3e87
 
da3e87
-			if (group_buffer == NULL) {
da3e87
+			if (ret != 0 || group_buffer == NULL) {
da3e87
 				free(group);
da3e87
 				goto group_task_error;
da3e87
 			}
da3e87
@@ -426,7 +426,7 @@ int config_group_admin_perm(char *perm_t
da3e87
 	struct cgroup *config_cgroup;
da3e87
 	long val = atoi(value);
da3e87
 	char buffer[CGROUP_BUFFER_LEN];
da3e87
-	int table_index;
da3e87
+	int table_index, ret;
da3e87
 
da3e87
 	switch (flag) {
da3e87
 	case CGROUP:
da3e87
@@ -469,10 +469,10 @@ int config_group_admin_perm(char *perm_t
da3e87
 			if (!group)
da3e87
 				goto admin_error;
da3e87
 
da3e87
-			getgrnam_r(value, group, buffer,
da3e87
+			ret = getgrnam_r(value, group, buffer,
da3e87
 					CGROUP_BUFFER_LEN, &group_buffer);
da3e87
 
da3e87
-			if (group_buffer == NULL) {
da3e87
+			if (ret != 0 || group_buffer == NULL) {
da3e87
 				free(group);
da3e87
 				goto admin_error;
da3e87
 			}
da3e87
@@ -1576,14 +1576,14 @@ int cgroup_config_create_template_group(
da3e87
 				/* name and controller match template found */
da3e87
 				/* variables substituted in template */
da3e87
 				strncpy(buffer, t_cgroup->name,
da3e87
-					FILENAME_MAX);
da3e87
+					FILENAME_MAX - 1);
da3e87
 				strncpy(t_cgroup->name, cgroup->name,
da3e87
-					FILENAME_MAX);
da3e87
+					FILENAME_MAX - 1);
da3e87
 
da3e87
 				ret = cgroup_create_cgroup(t_cgroup, flags);
da3e87
 
da3e87
 				strncpy(t_cgroup->name, buffer,
da3e87
-					FILENAME_MAX);
da3e87
+					FILENAME_MAX - 1);
da3e87
 				if (ret) {
da3e87
 					cgroup_dbg("creating group %s, error %d\n",
da3e87
 					cgroup->name, ret);
da3e87
@@ -1600,7 +1600,7 @@ int cgroup_config_create_template_group(
da3e87
 		/* no template is present for given name x controller pair
da3e87
 		 * add controller to result cgroup */
da3e87
 		aux_cgroup = cgroup_new_cgroup(cgroup->name);
da3e87
-		if (ret) {
da3e87
+		if (!aux_cgroup) {
da3e87
 			ret = ECGINVAL;
da3e87
 			fprintf(stderr, "cgroup %s can't be created\n",
da3e87
 				cgroup->name);
da3e87
diff -upr libcgroup-0.40.rc1.orig/src/daemon/cgrulesengd.c libcgroup-0.40.rc1/src/daemon/cgrulesengd.c
da3e87
--- libcgroup-0.40.rc1.orig/src/daemon/cgrulesengd.c	2013-05-21 15:36:04.000000000 +0200
da3e87
+++ libcgroup-0.40.rc1/src/daemon/cgrulesengd.c	2013-08-27 18:56:41.000674181 +0200
da3e87
@@ -646,7 +646,7 @@ close:
da3e87
 
da3e87
 static int cgre_create_netlink_socket_process_msg(void)
da3e87
 {
da3e87
-	int sk_nl = 0, sk_unix = 0, sk_max;
da3e87
+	int sk_nl = -1, sk_unix = -1, sk_max;
da3e87
 	struct sockaddr_nl my_nla;
da3e87
 	char buff[BUFF_SIZE];
da3e87
 	int rc = -1;
da3e87
@@ -784,9 +784,9 @@ static int cgre_create_netlink_socket_pr
da3e87
 	}
da3e87
 
da3e87
 close_and_exit:
da3e87
-	if (sk_nl > 0)
da3e87
+	if (sk_nl > -1)
da3e87
 		close(sk_nl);
da3e87
-	if (sk_unix > 0)
da3e87
+	if (sk_unix > -1)
da3e87
 		close(sk_unix);
da3e87
 	return rc;
da3e87
 }