From aef43552fc213111ae8967195ac382e1f9d083e2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Sep 2023 16:03:27 +0200 Subject: [PATCH 1/3] cgroup-util: rename return param to 'ret', as per coding style --- src/basic/cgroup-util.c | 33 ++++++++++++++++----------------- src/basic/cgroup-util.h | 11 +++++------ 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index b2b0ddd190..6e6d075392 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -39,12 +39,12 @@ #include "user-util.h" #include "xattr-util.h" -static int cg_enumerate_items(const char *controller, const char *path, FILE **_f, const char *item) { +static int cg_enumerate_items(const char *controller, const char *path, FILE **ret, const char *item) { _cleanup_free_ char *fs = NULL; FILE *f; int r; - assert(_f); + assert(ret); r = cg_get_path(controller, path, item, &fs); if (r < 0) @@ -54,22 +54,21 @@ static int cg_enumerate_items(const char *controller, const char *path, FILE **_ if (!f) return -errno; - *_f = f; + *ret = f; return 0; } -int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) { - return cg_enumerate_items(controller, path, _f, "cgroup.procs"); +int cg_enumerate_processes(const char *controller, const char *path, FILE **ret) { + return cg_enumerate_items(controller, path, ret, "cgroup.procs"); } -int cg_read_pid(FILE *f, pid_t *_pid) { +int cg_read_pid(FILE *f, pid_t *ret) { unsigned long ul; - /* Note that the cgroup.procs might contain duplicates! See - * cgroups.txt for details. */ + /* Note that the cgroup.procs might contain duplicates! See cgroups.txt for details. */ assert(f); - assert(_pid); + assert(ret); errno = 0; if (fscanf(f, "%lu", &ul) != 1) { @@ -83,7 +82,7 @@ int cg_read_pid(FILE *f, pid_t *_pid) { if (ul <= 0) return -EIO; - *_pid = (pid_t) ul; + *ret = (pid_t) ul; return 1; } @@ -178,12 +177,12 @@ bool cg_kill_supported(void) { return supported; } -int cg_enumerate_subgroups(const char *controller, const char *path, DIR **_d) { +int cg_enumerate_subgroups(const char *controller, const char *path, DIR **ret) { _cleanup_free_ char *fs = NULL; - int r; DIR *d; + int r; - assert(_d); + assert(ret); /* This is not recursive! */ @@ -195,13 +194,13 @@ int cg_enumerate_subgroups(const char *controller, const char *path, DIR **_d) { if (!d) return -errno; - *_d = d; + *ret = d; return 0; } -int cg_read_subgroup(DIR *d, char **fn) { +int cg_read_subgroup(DIR *d, char **ret) { assert(d); - assert(fn); + assert(ret); FOREACH_DIRENT_ALL(de, d, return -errno) { char *b; @@ -216,7 +215,7 @@ int cg_read_subgroup(DIR *d, char **fn) { if (!b) return -ENOMEM; - *fn = b; + *ret = b; return 1; } diff --git a/src/basic/cgroup-util.h b/src/basic/cgroup-util.h index 9b30ae0396..6e7845345a 100644 --- a/src/basic/cgroup-util.h +++ b/src/basic/cgroup-util.h @@ -176,13 +176,12 @@ typedef enum CGroupUnified { * generate paths with multiple adjacent / removed. */ -int cg_enumerate_processes(const char *controller, const char *path, FILE **_f); -int cg_read_pid(FILE *f, pid_t *_pid); -int cg_read_event(const char *controller, const char *path, const char *event, - char **val); +int cg_enumerate_processes(const char *controller, const char *path, FILE **ret); +int cg_read_pid(FILE *f, pid_t *ret); +int cg_read_event(const char *controller, const char *path, const char *event, char **ret); -int cg_enumerate_subgroups(const char *controller, const char *path, DIR **_d); -int cg_read_subgroup(DIR *d, char **fn); +int cg_enumerate_subgroups(const char *controller, const char *path, DIR **ret); +int cg_read_subgroup(DIR *d, char **ret); typedef enum CGroupFlags { CGROUP_SIGCONT = 1 << 0, From 8ab40789d93947b2be963fe72993eae642ccaeec Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Sep 2023 16:03:56 +0200 Subject: [PATCH 2/3] cgroup-util: initialize return param on all success returns As per coding style. --- src/basic/cgroup-util.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 6e6d075392..2d13e48366 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -73,8 +73,10 @@ int cg_read_pid(FILE *f, pid_t *ret) { errno = 0; if (fscanf(f, "%lu", &ul) != 1) { - if (feof(f)) + if (feof(f)) { + *ret = 0; return 0; + } return errno_or_else(EIO); } @@ -219,6 +221,7 @@ int cg_read_subgroup(DIR *d, char **ret) { return 1; } + *ret = NULL; return 0; } From 5ed7cdfb8fcaf1074174680e404dab5c366dba85 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Sep 2023 16:04:34 +0200 Subject: [PATCH 3/3] cgroup-util: tighten range check before casting to pid_t --- src/basic/cgroup-util.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 2d13e48366..92caccfcd4 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -83,6 +83,8 @@ int cg_read_pid(FILE *f, pid_t *ret) { if (ul <= 0) return -EIO; + if (ul > PID_T_MAX) + return -EIO; *ret = (pid_t) ul; return 1;