From 0d05984674d7055031e4591f9bc3e74dfd7126d0 Mon Sep 17 00:00:00 2001 From: Kamalesh Babulal Date: Wed, 3 May 2023 16:17:06 +0530 Subject: [PATCH] api: cgroup_get_current_controller_path: fix a segfault cgroup_get_current_controller_path(pid, controller, current_path), the third argument isn't currently validated and will cause segfault if the user passes NULL, in place of expect char **. Introduce a check to validate current_path argument too. Reproducer: ___________ #include #include #include int main(int argc, char **argv) { pid_t pid; int ret; ret = cgroup_init(); if (ret) { printf("cgroup initialization failed:%s\n", cgroup_strerror(ret)); return ret; } ret = cgroup_get_current_controller_path(atoi(argv[1]), NULL, NULL); /* should not reach here */ return 0; } # gcc -o rep rep.c # ./rep Segmentation fault (core dumped) Signed-off-by: Kamalesh Babulal Signed-off-by: Tom Hromatka --- src/api.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/api.c b/src/api.c index 99ca01b8..9b830720 100644 --- a/src/api.c +++ b/src/api.c @@ -4816,6 +4816,9 @@ int cgroup_get_current_controller_path(pid_t pid, const char *controller, char * return ECGROUPNOTINITIALIZED; } + if (!current_path) + return ECGOTHER; + mode = cgroup_setup_mode(); if (mode == CGROUP_MODE_LEGACY && !controller) return ECGOTHER; -- 2.47.2