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

2ae3c9
diff -up libcgroup-0.41/src/api.c.fread libcgroup-0.41/src/api.c
2ae3c9
--- libcgroup-0.41/src/api.c.fread	2014-01-13 21:01:32.067067615 +0100
2ae3c9
+++ libcgroup-0.41/src/api.c	2014-01-13 21:01:32.070067594 +0100
2ae3c9
@@ -2232,29 +2232,29 @@ static int cg_rd_ctrl_file(const char *s
2ae3c9
 					const char *file, char **value)
2ae3c9
 {
2ae3c9
 	char path[FILENAME_MAX];
2ae3c9
-	FILE *ctrl_file = NULL;
2ae3c9
-	int ret;
2ae3c9
+	int ctrl_file = -1;
2ae3c9
+	ssize_t ret;
2ae3c9
 
2ae3c9
 	if (!cg_build_path_locked(cgroup, path, subsys))
2ae3c9
 		return ECGFAIL;
2ae3c9
 
2ae3c9
 	strncat(path, file, sizeof(path) - strlen(path));
2ae3c9
-	ctrl_file = fopen(path, "re");
2ae3c9
-	if (!ctrl_file)
2ae3c9
+	ctrl_file = open(path, O_RDONLY | O_CLOEXEC);
2ae3c9
+	if (ctrl_file < 0)
2ae3c9
 		return ECGROUPVALUENOTEXIST;
2ae3c9
 
2ae3c9
 	*value = calloc(CG_VALUE_MAX, 1);
2ae3c9
 	if (!*value) {
2ae3c9
-		fclose(ctrl_file);
2ae3c9
+		close(ctrl_file);
2ae3c9
 		last_errno = errno;
2ae3c9
 		return ECGOTHER;
2ae3c9
 	}
2ae3c9
 
2ae3c9
 	/*
2ae3c9
-	 * using %as crashes when we try to read from files like
2ae3c9
+	 * using %as or fread crashes when we try to read from files like
2ae3c9
 	 * memory.stat
2ae3c9
 	 */
2ae3c9
-	ret = fread(*value, 1, CG_VALUE_MAX-1, ctrl_file);
2ae3c9
+	ret = read(ctrl_file, *value, CG_VALUE_MAX-1);
2ae3c9
 	if (ret < 0) {
2ae3c9
 		free(*value);
2ae3c9
 		*value = NULL;
2ae3c9
@@ -2264,7 +2264,7 @@ static int cg_rd_ctrl_file(const char *s
2ae3c9
 			(*value)[ret-1] = '\0';
2ae3c9
 	}
2ae3c9
 
2ae3c9
-	fclose(ctrl_file);
2ae3c9
+	close(ctrl_file);
2ae3c9
 
2ae3c9
 	return 0;
2ae3c9
 }