]> git.ipfire.org Git - thirdparty/libcgroup.git/commitdiff
api.c: add precision to fscanf(), in cgroup_populate_controllers()
authorKamalesh Babulal <kamalesh.babulal@oracle.com>
Mon, 8 Aug 2022 17:01:31 +0000 (11:01 -0600)
committerTom Hromatka <tom.hromatka@oracle.com>
Mon, 8 Aug 2022 17:01:50 +0000 (11:01 -0600)
Fix calling risky function warning, reported by Coverity tool:

CID 258305 (#1 of 1): Calling risky function
(DC.STREAM_BUFFER)dont_call: fscanf assumes an arbitrarily long string,
so callers must use correct precision specifiers or never use fscanf.

As per secure coding standard, using '%s' in the fscanf() is not
recommend, hence fix it by using the precision of macro
MAX_CGROUP_TYPE_NAMELEN borrowed from Linux Kernel for the maximum
allowed controller/subsys_name length.

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

src/api.c

index 6515142a4ec33f453082be27955890e9c76d4455..02257905f68515d0641c74aba118c7351bc92b37 100644 (file)
--- a/src/api.c
+++ b/src/api.c
@@ -1362,7 +1362,11 @@ int cgroup_init(void)
 
        i = 0;
        while (!feof(proc_cgroup)) {
-               err = fscanf(proc_cgroup, "%s %d %d %d", subsys_name,
+               /*
+                * check Linux Kernel sources/kernel/cgroup/cgroup.c cgroup_init_early(),
+                * MAX_CGROUP_TYPE_NAMELEN check for details on why 32 is used.
+                */
+               err = fscanf(proc_cgroup, "%32s %d %d %d", subsys_name,
                                &hierarchy, &num_cgroups, &enabled);
                if (err < 0)
                        break;