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 <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit
42436e7e32412c32d2130198fe8a4c0ff48e1d07)
struct cgroup_controller *controller;
int i, ret;
- if (!cgroup)
+ if (!cgroup || !name)
return NULL;
/* Still not sure how to handle the failure here. */