From: Kamalesh Babulal Date: Fri, 24 Feb 2023 05:35:02 +0000 (+0530) Subject: wrapper: fix segfault in cgroup_add_controller() X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=371aa7e4c9f30cdeea35e8d96fa870607661b293;p=thirdparty%2Flibcgroup.git wrapper: fix segfault in cgroup_add_controller() The second argument passed to cgroup_add_controller() is of type char * and the user might pass NULL in place of the arguments, causing a segfault. segfault is trigger when the NULL, argument values is used without checks, fix it by checking for NULL before proceeding. Reproducer: ----------- int main(void) { struct cgroup_controller *cgc; struct cgroup *cgrp; int ret; cgroup_init(); if (ret) exit(1); cgrp = cgroup_new_cgroup("fuzzer"); if (!cgrp) exit(1); cgc = cgroup_add_controller(cgrp, "cpu"); if (!cgc) exit(1); cgroup_add_controller(cgrp, NULL); // should not reach here return 0; } Signed-off-by: Kamalesh Babulal Signed-off-by: Tom Hromatka (cherry picked from commit 42436e7e32412c32d2130198fe8a4c0ff48e1d07) --- diff --git a/src/wrapper.c b/src/wrapper.c index c97b529e..2038ae78 100644 --- a/src/wrapper.c +++ b/src/wrapper.c @@ -63,7 +63,7 @@ struct cgroup_controller *cgroup_add_controller(struct cgroup *cgroup, const cha struct cgroup_controller *controller; int i, ret; - if (!cgroup) + if (!cgroup || !name) return NULL; /* Still not sure how to handle the failure here. */