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

CID 258300 (#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>
src/api.c

index f8c5acd7a7363495d2730bc506c09d27730e73ac..df7957a145c7da88e101cafd76ee0a4ed9bd5444 100644 (file)
--- a/src/api.c
+++ b/src/api.c
@@ -5537,7 +5537,11 @@ int cgroup_get_all_controller_next(void **handle, struct controller_data *info)
        if (!info)
                return ECGINVAL;
 
-       err = fscanf(proc_cgroup, "%s %d %d %d\n", subsys_name, &hierarchy, &num_cgroups,
+       /*
+        * 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\n", subsys_name, &hierarchy, &num_cgroups,
                     &enabled);
 
        if (err != 4)