From: Kamalesh Babulal Date: Wed, 3 May 2023 10:47:06 +0000 (+0530) Subject: api: cgroup_get_current_controller_path: fix a segfault X-Git-Tag: v3.1.0~78 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0d05984674d7055031e4591f9bc3e74dfd7126d0;p=thirdparty%2Flibcgroup.git 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 --- 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;