]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
tools/cgset: fix Uninitialized pointer read
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Fri, 17 Feb 2023 09:59:30 +0000 (09:59 +0000)
committerTom Hromatka <tom.hromatka@oracle.com>
Fri, 17 Feb 2023 15:13:58 +0000 (08:13 -0700)
Fix Uninitialized pointer read, reported by Coverity Tool:

CID 307779 (#2 of 2): Uninitialized pointer read (UNINIT)22.
uninit_use_in_call: Using uninitialized value src_cgroup when calling
cgroup_free.

In main(), src_cgrp points to a valid struct cgroup only when the
user calls cgxset using --copy-from flag, Coverity warns about the
freeing src_cgrp, which is uninitialized in the error path.  This patch
initializes converted_src_cgroup, src_cgroup and cgroup uninitialized
pointers and checks is src_cgrp is valid pointer before passing it to
cgroup_free()

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 94ba8b65f8b3424232cf3fea5a06fbbfb921789a)

src/tools/cgxset.c

index eaac1b09c93f249ae9f2eb24b2a0ba315c912b54..1a8843af6bd10aa713afb15d4d07c8bdc0ae632e 100644 (file)
@@ -144,10 +144,10 @@ int main(int argc, char *argv[])
        int nv_number = 0;
        int nv_max = 0;
 
-       struct cgroup *converted_src_cgroup;
+       struct cgroup *converted_src_cgroup = NULL;
        char src_cg_path[FILENAME_MAX] = "\0";
-       struct cgroup *src_cgroup;
-       struct cgroup *cgroup;
+       struct cgroup *src_cgroup = NULL;
+       struct cgroup *cgroup = NULL;
 
        enum cg_version_t src_version = CGROUP_UNK;
        bool ignore_unmappable = false;
@@ -318,7 +318,8 @@ int main(int argc, char *argv[])
 cgroup_free_err:
        if (cgroup)
                cgroup_free(&cgroup);
-       cgroup_free(&src_cgroup);
+       if (src_cgroup)
+               cgroup_free(&src_cgroup);
 err:
        free(name_value);