summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/libcgrouptest01.c51
1 files changed, 34 insertions, 17 deletions
diff --git a/tests/libcgrouptest01.c b/tests/libcgrouptest01.c
index a09a389..63c1469 100644
--- a/tests/libcgrouptest01.c
+++ b/tests/libcgrouptest01.c
@@ -15,6 +15,7 @@
*/
#include "libcgrouptest.h"
+#include <errno.h>
/* The messages that may be useful to the user */
char info[NUM_MSGS][SIZE] = {
@@ -986,6 +987,8 @@ void get_controllers(const char *name, int *exist)
if (strncmp(name, subsys_name, sizeof(*name)) == 0)
*exist = 1;
}
+
+ fclose(fd);
}
static int group_exist(char *path_group)
@@ -1042,6 +1045,7 @@ static int group_modified(char *path_control_file, int value_type)
u_int64_t uint64_val;
char string_val[FILENAME_MAX]; /* Doubt: what should be the size ? */
FILE *fd;
+ int error = 1;
fd = fopen(path_control_file, "r");
if (!fd) {
@@ -1055,31 +1059,32 @@ static int group_modified(char *path_control_file, int value_type)
case BOOL:
fscanf(fd, "%d", &bool_val);
if (bool_val == val_bool)
- return 0;
+ error = 0;
break;
case INT64:
fscanf(fd, "%lld", &int64_val);
if (int64_val == val_int64)
- return 0;
+ error = 0;
break;
case UINT64:
fscanf(fd, "%llu", &uint64_val);
if (uint64_val == val_uint64)
- return 0;
+ error = 0;
break;
case STRING:
fscanf(fd, "%s", string_val);
if (!strncmp(string_val, val_string, strlen(string_val)))
- return 0;
+ error = 0;
break;
default:
fprintf(stderr, "Wrong value_type passed "
"in group_modified()\n");
fprintf(stderr, "Skipping modified values check....\n");
- return 0; /* Can not report test result as failure */
+ error = 0; /* Can not report test result as failure */
break;
}
- return 1;
+ fclose(fd);
+ return error;
}
static int add_control_value(struct cgroup_controller *newcontroller,
char * control_file, char *wr, int value_type)
@@ -1163,21 +1168,24 @@ struct cgroup *new_cgroup(char *group, char *controller_name,
int check_fsmounted(int multimnt)
{
int count = 0;
- struct mntent *entry, *tmp_entry;
+ struct mntent *entry, *tmp_entry = NULL;
/* Need a better mechanism to decide memory allocation size here */
char entry_buffer[FILENAME_MAX * 4];
- FILE *proc_file;
+ FILE *proc_file = NULL;
+ int ret = 1;
tmp_entry = (struct mntent *) malloc(sizeof(struct mntent));
if (!tmp_entry) {
perror("Error: failled to mallloc for mntent\n");
- return 1;
+ ret = 1;
+ goto error;
}
proc_file = fopen("/proc/mounts", "r");
if (!proc_file) {
printf("Error in opening /proc/mounts.\n");
- return EIO;
+ ret = errno;
+ goto error;
}
while ((entry = getmntent_r(proc_file, tmp_entry, entry_buffer,
FILENAME_MAX*4)) != NULL) {
@@ -1187,16 +1195,23 @@ int check_fsmounted(int multimnt)
if (count >= 2) {
printf("sanity check pass. %s\n",
entry->mnt_type);
- return 0;
+ ret = 0;
+ goto error;
}
} else {
printf("sanity check pass. %s\n",
entry->mnt_type);
- return 0;
+ ret = 0;
+ goto error;
}
}
}
- return 1;
+error:
+ if (tmp_entry)
+ free(tmp_entry);
+ if (proc_file)
+ fclose(proc_file);
+ return ret;
}
static int check_task(char *tasksfile)
@@ -1220,6 +1235,7 @@ static int check_task(char *tasksfile)
break;
}
}
+ fclose(file);
return pass;
}
@@ -1246,13 +1262,13 @@ static inline void build_path(char *target, char *mountpoint,
strncpy(target, mountpoint, FILENAME_MAX);
if (group) {
- strncat(target, "/", FILENAME_MAX);
- strncat(target, group, FILENAME_MAX);
+ strncat(target, "/", FILENAME_MAX - strlen(target));
+ strncat(target, group, FILENAME_MAX - strlen(target));
}
if (file) {
- strncat(target, "/", FILENAME_MAX);
- strncat(target, file, FILENAME_MAX);
+ strncat(target, "/", FILENAME_MAX - strlen(target));
+ strncat(target, file, FILENAME_MAX - strlen(target));
}
}
@@ -1350,6 +1366,7 @@ void test_cgroup_get_cgroup(int ctl1, int ctl2, int i)
else
message(i++, FAIL, "get_cgroup()", ret,
info[NOTCRTDGRP]);
+ cgroup_free(&cgroup_filled);
/* 3.
* Test with name filled cgroup. Ensure the group group1 exists