1 diff --git a/src/api.c b/src/api.c
2 index 54a6736..1557393 100644
5 @@ -2482,29 +2482,29 @@ static int cg_rd_ctrl_file(const char *subsys, const char *cgroup,
6 const char *file, char **value)
8 char path[FILENAME_MAX];
9 - FILE *ctrl_file = NULL;
14 if (!cg_build_path_locked(cgroup, path, subsys))
17 strncat(path, file, sizeof(path) - strlen(path));
18 - ctrl_file = fopen(path, "re");
20 + ctrl_file = open(path, O_RDONLY | O_CLOEXEC);
22 return ECGROUPVALUENOTEXIST;
24 *value = calloc(CG_CONTROL_VALUE_MAX, 1);
33 - * using %as crashes when we try to read from files like
34 + * using %as or fread crashes when we try to read from files like
37 - ret = fread(*value, 1, CG_CONTROL_VALUE_MAX-1, ctrl_file);
38 + ret = read(ctrl_file, *value, CG_CONTROL_VALUE_MAX-1);
42 @@ -2514,7 +2514,7 @@ static int cg_rd_ctrl_file(const char *subsys, const char *cgroup,
43 (*value)[ret-1] = '\0';