wrapper.c: return on failure in cgroup_add_all_controllers()
Add missing goto statement, to return on failure, reported by Coverity
tool:
CID 258281 (#1 of 1): Unused value (UNUSED_VALUE)assigned_value:
Assigning value ECGINVAL to ret here, but that stored value is
overwritten before it can be used.
the tool reported about unused ret value, but it turned out that the
NULL ret value is for failed attempt to add a controller to the desired
cgroup and needs bailing out after losing the handle. Fix it by
introducing the goto statement in cgroup_add_all_controllers()
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
TJH: Also fix unrelated grammar error near this change.
(cherry picked from commit 83d64a4474366938e1459403eb0c98c3d3b7ee00)
Fix non-terminated string warnings, reported by the Coverity tool:
CID 258293 (#2 of 2): Copy into fixed size buffer (STRING_OVERFLOW).
fixed_size_dest: You might overrun the 32-character fixed-size string
config_namespace_table[namespace_table_index].name by copying name
without checking the length.
fix one another similar string
config_namespace_table[namespace_table_index].mount.path in the same
function cgroup_config_insert_into_namespace_table() by explicitly
terminating by appending '\0';
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 8eee916573cd9a67713dd645d644d22759f39a69)
Fix non-terminated string warning, reported by Coverity tool:
CID 258266 (#1 of 1): String not null-terminated (STRING_NULL).
string_null: Passing unterminated string con to strtok, which expects a
null-terminated string.
Fix the warning in create_cgroup_from_name_value_pairs(), by adding
'\0'.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 0fd476b6a6f309ccd3b0c473c844a27e7620cddd)
config: cgroup_config_insert_into_mount_table() use strncpy()
Fix copy into fixed size buffer warning, reported by Coverity tool:
CID 258282 (#2 of 2): Copy into fixed size buffer (STRING_OVERFLOW)9.
fixed_size_dest: You might overrun the 4096-character fixed-size string
config_mount_table[config_table_index].mount.path by copying mount_point
without checking the length.
parameter_as_source: Note: This defect has an elevated risk because the
source argument is a parameter of the current function
Also, convert config_mount_table[config_table_index].name strcpy to
strncpy.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 4c8e4fd284b4677e5e9bab4f9e13b0866020b499)
calling "hasmntopt" to determine if the controller name exists in
"mntopt", may cause errors because of "hasmntopt" only match substring.
cpu controller may incorrectly match to cpuset when cpuset mount info
appeared before cpu,cpuacct in "/proc/mounts", so we need to validate
the last character to make sure the controller name matches exactly.
Signed-off-by: liupan <490021209@qq.com> Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit a18ae861e77f106517df203e30a810ba59b082d9)
Tom Hromatka [Thu, 9 Jun 2022 19:05:23 +0000 (13:05 -0600)]
api.c: Fix handling of full cg_mount_table[]
Commit 9ce90c7edd28 ("api.c: fix segfault in cgroup_populate_mount_points()")
added logic to handle the case when there are 100+ cgroup mounts and
not overflow the cg_mount_table[]. But elsewhere in the libcgroup
code, it's expected that the last entry in the cg_mount_table[] has
a null name entry.
When the cg_mount_table[] is full, make the name of the last entry
null so that loops know to exit. Also, add a couple bail out points
in cgroup_populate_mount_points() to ensure that we don't write
beyond the end of the table.
Depending upon the order in which the tests are run, this failure can
manifest itself as follows:
$ cat tests/ftests/ftests-nocontainer.sh.log
free(): invalid pointer
./ftests-nocontainer.sh: line 18: 199390 Aborted
(core dumped) ./ftests.py -l 10 -L "$START_DIR/ftests-nocontainer.py.log" --no-container -n Libcg"$RANDOM"
FAIL ftests-nocontainer.sh (exit status: 134)
Fixes: 9ce90c7edd28 ("api.c: fix segfault in cgroup_populate_mount_points()") Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com> Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
(cherry picked from commit 50de38f821f5ea367f9a92a802a45659dc45614d)
wrapper: null terminated string in cgroup_add_controller()
Fix non-terminated string warning, reported by Coverity tool:
CID 258271 (#1 of 1): String not null terminated (STRING_NULL).
string_null: Passing unterminated string cgc->name to strcmp, which
expects a null-terminated string.
This issue was reported following the path src/abstraction-common.c:
- cgroup_convert_cgroup()
- cgroup_add_controller()
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Kamalesh Babulal [Tue, 31 May 2022 22:55:47 +0000 (16:55 -0600)]
api: null terminated string in cgroup_get_controller_next()
Fix non-terminated string warnings, reported by Coverity tool:
CID 258299 (#1-2 of 2): String not null terminated (STRING_NULL).
string_null: Passing unterminated string controller.path to strcmp,
which expects a null-terminated string
This issue was reported following the path src/tools/cgsnapshot.c:
- parse_controllers()
- cgroup_get_controller_begin()
- cgroup_get_controller_next()
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Kamalesh Babulal [Tue, 31 May 2022 22:52:53 +0000 (16:52 -0600)]
config: add missing ret value check from getgrnam_r()
Fix Unchecked return values from library, reported by Coverity tool:
CID 258287 (#1 of 1): Unchecked return value from library
(CHECKED_RETURN).
check_return: Calling getgrnam_r(value, group, buffer, 20480UL,
&group_buffer) without checking return value. This library function may
fail and return an error code.
CID 258303 (#1 of 1): Unchecked return value from library
(CHECKED_RETURN).
check_return: Calling getgrnam_r(value, group, buffer, 20480UL,
&group_buffer) without checking return value. This library function may
fail and return an error code.
Coverity expects us to check for return value from getgrnam_r(), instead
of the current for group_buffer != NULL. Which is right, let's make
Coverity happy by moving the check to return value.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Kamalesh Babulal [Fri, 27 May 2022 20:58:13 +0000 (14:58 -0600)]
api: fix coverity warning about uninitialized variable
CID 258269 (#1 of 1): Uninitialized scalar variable (UNINIT).
uninit_use: Using uninitialized value version.
In _cgroup_create_cgroup(), the (cg_version_t)version is uninitialized
and might be read the version in false path. It worked until now
because the version is assigned in the true path and given that its enum
the checks are not bounded by range, but rather specific.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Kamalesh Babulal [Wed, 25 May 2022 13:50:07 +0000 (07:50 -0600)]
tools/cgget: fix coverity warning about double free
Fix double free warning, reported by Coverity tool:
CID 258297 (#1 of 1): Double free (USE_AFTER_FREE). double_free:
Calling closedir frees pointer dir which has already been freed.
As per the man page, the closedir(), closes the directory stream
associated with the dirp, but is ambiguous about if dirp is set to NULL
or not. Coverity answers that with the above report, that dirp is not
NULL and hence the double free.
Fixes: fea1ab8b45d7 ("tools/cgget: fix coverity warning about resource leak") Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 703bbb8554ce882eb461e16c389d20a356f095de)
Kamalesh Babulal [Wed, 25 May 2022 13:42:08 +0000 (07:42 -0600)]
api.c: fix coverity out of bounds read warning
Fix out of bounds read, reported by Coverity tool:
CID 1412156 (#1 of 1): Out-of-bounds read (OVERRUN).
overrun-local: Overrunning array cgroup_strerror_codes of 30 8-byte
elements at element index 49999 (byte offset 399999) using index
code % ECGROUPNOTCOMPILED (which evaluates to 49999).
Reproducer:
-----------
$ cat cgrp-strerr.c
int main(void)
{
int err = ECGNONEMPTY;
fprintf(stderr, "%s\n", cgroup_strerror(err));
return 0;
}
without the patch:
-----------------
$ ./cgrp-stderr
(null)
with the patch:
---------------
$ ./cgrp-stderr
Failed to remove a non-empty group
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
There are scenarios where running tests as part of the make check is
not desirable, like rpmbuild. The build systems might not have the
environment to run the tests and might fail to build the packages.
This patch introduces, --enable-tests as a configure option, which
is set by default and can be disabled using the --disable-tests flag.
When disabled, the configure will skip creating the Makefiles for the
tests/* directories and in the top-level Makefile the SUBDIRS omits
tests. For example, consider the rpmbuild case to build rpm with
--disable-tests passed:
1. ./bootstrap.sh
2. ./configure ./configure --enable-opaque-hierarchy="name=systemd"
--disable-tests
3. make check
4. make dist
5. cp libcgroup-2.0.2.tar.gz ~/rpmbuild/SOURCES
6. append --disable-tests to configure in libcgroup.spec
7. rpmbuild -ba libcgroup.spec
this will skip running the test/*, during the build, avoiding unexpected
failures
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Fix uninitialized scalar variable, reported by Coverity tool:
CID 1412125 (#1 of 1): Uninitialized scalar variable (UNINIT).
uninit_use_in_call: Using uninitialized element of array *controllers
when calling is_ctlr_on_list.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 4a92b3ca0fcca18f69ee75d4627db7171d22d217)
Fix uninitialized scalar variable, reported by Coverity tool:
CID 1488715 (#1 of 1): Uninitialized scalar variable (UNINIT).
uninit_use_in_call: Using uninitialized value *src_cg_path as argument
to %s when calling fprintf.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit b652d0e431835c5566be4cdf27172445bfe9d015)
Fix uninitialized scalar variable, reported by Coverity tool:
CID 1488707 (#1 of 1): Uninitialized scalar variable (UNINIT).
uninit_use_in_call: Using uninitialized value *cont_names when calling
print_controller_mount.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 059095386e150710beb93c71977031c1245c176e)
Fix a wrong argument size, reported by Coverity tool:
CID 1412122 (#1 of 1): Wrong sizeof argument (SIZEOF_MISMATCH)
suspicious_sizeof: Passing argument 8UL
/* sizeof (struct ext_cgroup_record *) */ to function calloc and then
casting the return value to struct ext_cgroup_record * is suspicious.
Also, fix the typo in the variable name, that's being allocated memory.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 2045fcd6b3428f1b1ca226974259e00399049472)
Kamalesh Babulal [Mon, 16 May 2022 22:06:44 +0000 (16:06 -0600)]
workflows/CI: upgrade CodeQL actions used to v2
CodeQL warns about deprecating v1 by Dec 2022. Upgrade the CodeQL
actions, as per the recommendation made in the upgrade guide at:
https://github.blog/changelog/2022-04-27-code-scanning-deprecation-of-codeql-action-v1/
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 887bae0df3c68c73375b822931acc7aff5add87e)
Kamalesh Babulal [Wed, 11 May 2022 16:21:46 +0000 (10:21 -0600)]
configure: fix the extra spaces in --enable-bindings
Extra spaces between the default action assignment for the feature
--enable-bindings feature, fails with:
./configure: line 12510: with_bindings: command not found
fix the issue by removing the extra spaces in the assignment.
api.c: fix segfault while processing cgroup mount points
The cgroup v1 and cgroup v2 mount points get read from /proc/mounts in
cgroup_process_v1_mnt()/cgroup_process_v2_mnt() respectively and gets
populated into cg_mount_table[]. The size of cg_mount_table[] is set
to CG_CONTROLLER_MAX, that's defined as 100 and if the system has more
than CG_CONTROLLER_MAX, unique mount points, it will segfault while
processing them. Fix this by checking, the mount point count after
processing every mount entry and bailout in case it reaches
CG_CONTROLLER_MAX.
The issue can be reproduced using, following simple bash commands on
cgroup v1:
1. sudo for i in $(seq 0 100); do sudo mkdir /name$i; done
2. sudo for i in $(seq 0 100); do sudo mount -t cgroup -o
none,name=named$i none /name$i; done
3. sudo cgget -g <controller>:<existing cgroup name>
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Kamalesh Babulal [Thu, 27 Jan 2022 19:47:55 +0000 (12:47 -0700)]
api.c: add support for cgroup.threads
cgroup_build_tasks_procs_path(), that builds the proc path for moving
the tid, doesn't check for the cgroup type and appends cgroup.procs for
both cgroup v1/v2. With cgroup v2, this results in building a wrong
proc path if the cgroup type is threaded. This patch adds support to
check for the cgroup v2 type and build the proc path according to the
below table:
cgroup.type | proc file | Description |
----------------+----------------+------------------------------------+
domain | cgroup.procs | regular cgroup, all threads gets |
| | moved to the cgroup. |
domain threaded | cgroup.procs | root of threaded subtree, all |
| | threads gets moved to the cgroup. |
threaded | cgroup.threads | cgroup under threaded subtree, |
| | single threads with matching tid, |
| | gets moved to the cgroup. |
domain invalid | N/A | invalid state of a cgroup under the|
| | threaded subtree. |
Closes: https://github.com/libcgroup/libcgroup/issues/64 Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
cherry picked from commit 4c577f91050b1ad00e5ed2b2abb40fc4978db996)
Kamalesh Babulal [Tue, 18 Jan 2022 15:35:04 +0000 (08:35 -0700)]
api.c: cache cgrules with CGFLAG_USECACHE flag
pam_cgroup.so plugin uses /etc/cgrules.conf to assign processes
to the requested cgroup. This works well with active
cgrulesengd but in the instances where cgrulesengd is disabled,
the rules are not read and cached by default. Fix this is by
reloading and caching the rules when called with CGFLAG_USECACHE
flag.
Fixes: https://github.com/libcgroup/libcgroup/issues/84 Reported-by: Kent Overstreet <kent.overstreet@gmail.com> Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
TJH: Minor commit comment changes
(cherry picked from commit 80a0bd4b8873df38060309e775d609dcc219531f)
Ingo van Lil [Thu, 16 Dec 2021 20:34:00 +0000 (13:34 -0700)]
Initialize cgroup version for named V1 hierarchy
Commit 3aac9889 added the 'version' field in cg_mount_table_s and
initializes it in cgroup_process_v1_mnt(). The same initialization is
required in a second place dealing with named hierarchies.
Signed-off-by: Ingo van Lil <inguin@gmx.de> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit d0a1979e8078e7669daf1713bb97ef408a2befbc)
Ross Burton [Fri, 3 Dec 2021 15:38:27 +0000 (08:38 -0700)]
automake: idiomatically mark test libraries as convenience libraries
Instead of installing then deleting, mark the libraries which are only
used at build time and should not be installed as noinst, so they don't
get installed at all.
Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 1932bd3c46fc5f3532d6583ccc2ccd4c8d8530a2)
Tom Hromatka [Fri, 12 Nov 2021 18:32:03 +0000 (18:32 +0000)]
github: Run test 028 last
A merge conflict moved the running of test 028 before
running `make check`. Run test 028-cgclear-basic_cgclear.py
last because it is destructive to the cgroup hierarchy.
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Fri, 12 Nov 2021 13:56:37 +0000 (06:56 -0700)]
automake: Don't install testing libraries
libcgset and libcgfortesting are libraries that are used by the
unit test framework and are not intended to be installed when
`make install` is invoked. Delete them from the install path.
Closes: https://github.com/libcgroup/libcgroup/issues/62 Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 6c941e8b26fbd6613c96ed65e08290aa21ff33de)
Tom Hromatka [Fri, 12 Nov 2021 13:52:51 +0000 (06:52 -0700)]
automake: Link libcgset with libcgroup
When linking with the -Wl,--no-undefined flag enabled, libcgset
fails due to undefined symbols. Fix this by enabling this flag
and linking with libcgroup.la
Closes: https://github.com/libcgroup/libcgroup/issues/66 Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit b4015e3f96fc430029a37e94edc151e16727e8f1)
Kamalesh Babulal [Thu, 21 Oct 2021 21:25:55 +0000 (15:25 -0600)]
github: re-arrange workflow run commands
The current workflow executes the functional tests from the make check
called at the top-level source directory. Though this runs the tests
case, it also has an unintended side effect of re-running gunit tests
for every functional test combination in the workflow. Fix it, by
re-arranging the function test run commands, to change into
tests/ftests directory before executing make check.
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 348f50bed7bfab1a63a649b4a65120fb03a7d3c2)
Ross Burton [Fri, 10 Sep 2021 17:42:20 +0000 (11:42 -0600)]
configure.ac: check for the library containing fts_open
The musl C library doesn't provide fts.h[1], so libcgroup doesn't
compile with musl. However, there is a standalone implementation of fts
for musl users[2] which can be used.
Use AC_SEARCH_LIBS to search for fts_open, which will check if it is part
of libc, and if not look in libfts, then set LIBS if needed.
Signed-off-by: Ross Burton <ross.burton@arm.com>
[TJH: minor formatting changes to match existing configure.ac] Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 27ba904355575153308bdc0fa48344ef1be55ca1)
Replace __BEGIN_DECLS and __END_DECLS with extern "C".
The macros __BEGIN_DECLS and __END_DECLS are a GNU-ism found in
glibc and uClibc, but not musl. We replace them by the more general
extern "C" { ... } block exposed only if we have __cplusplus.
Forward ported from a patch by Anthony G. Basile <blueness@gentoo.org>.
Signed-off-by: Alex Xu (Hello71) <alex_y_xu@yahoo.ca> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
(cherry picked from commit 215974e67a24edf9097507e8707190b6a42c7207)
Tomasz Kłoczko [Wed, 12 May 2021 20:35:40 +0000 (20:35 +0000)]
automake: replace INCLUDES by CPPFLAGS
automake shows warnings like below:
src/Makefile.am:16: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
src/Makefile.am: installing 'build-aux/depcomp'
src/bindings/Makefile.am:2: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
src/daemon/Makefile.am:3: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
src/pam/Makefile.am:1: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
src/tools/Makefile.am:3: warning: 'INCLUDES' is the old name for 'AM_CPPFLAGS' (or '*_CPPFLAGS')
Signed-off-by: Tomasz Kłoczko <kloczek@github.com> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 17:08:38 +0000 (17:08 +0000)]
lscgroup: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncat’,
inlined from ‘print_cgroup’ at lscgroup.c:149:4:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:136:10: warning: ‘__builtin___strncat_chk’ output
may be truncated copying between 0 and 4095 bytes from a string of length 4095 [-Wstringop-truncation]
136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 17:04:21 +0000 (17:04 +0000)]
lssubsys: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘print_all_controllers_in_hierarchy’ at lssubsys.c:131:4,
inlined from ‘cgroup_list_all_controllers’ at lssubsys.c:225:9,
inlined from ‘main’ at lssubsys.c:293:8:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 17:03:18 +0000 (17:03 +0000)]
lssubsys: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘print_all_controllers_in_hierarchy’ at lssubsys.c:127:4,
inlined from ‘cgroup_list_all_controllers’ at lssubsys.c:223:9,
inlined from ‘main’ at lssubsys.c:291:8:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:58:12 +0000 (16:58 +0000)]
lssubsys: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncat’,
inlined from ‘print_all_controllers_in_hierarchy’ at lssubsys.c:134:4,
inlined from ‘cgroup_list_all_controllers’ at lssubsys.c:222:9,
inlined from ‘main’ at lssubsys.c:290:8:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:136:10: warning: ‘__builtin___strncat_chk’ output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]
136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:53:44 +0000 (16:53 +0000)]
cgget: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncat’,
inlined from ‘fill_empty_controller’ at cgget.c:584:2:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:136:10: warning: ‘__builtin___strncat_chk’ output may be truncated copying between 0 and 4095 bytes from a string of length 4095 [-Wstringop-truncation]
136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:48:33 +0000 (16:48 +0000)]
config.c: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘cgroup_config_create_template_group’ at config.c:1850:5:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:46:24 +0000 (16:46 +0000)]
config.c: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘cgroup_config_create_template_group’ at config.c:1844:5:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:42:41 +0000 (16:42 +0000)]
config.c: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘cgroup_config_create_template_group’ at config.c:1841:5:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:40:39 +0000 (16:40 +0000)]
api.c: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncat’,
inlined from ‘cgroup_get_cgroup’ at api.c:3153:3:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:136:10: warning: ‘__builtin___strncat_chk’ output may be truncated copying between 0 and 4095 bytes from a string of length 4095 [-Wstringop-truncation]
136 | return __builtin___strncat_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:35:46 +0000 (16:35 +0000)]
api.c: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘cgroup_parse_rules_file’ at api.c:814:3:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin_strncpy’ output may be truncated copying 4095 bytes from a string of length 4095 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:32:10 +0000 (16:32 +0000)]
api.c: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘cgroup_parse_rules_file’ at api.c:798:3:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin___strncpy_chk’ output may be truncated copying between 0 and 255 bytes from a string of length 255 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 27 Apr 2021 16:30:21 +0000 (16:30 +0000)]
api.c: Fix strncpy() truncation warning
Fix the following strncpy() string truncation warning:
In function ‘strncpy’,
inlined from ‘cgroup_parse_rules_file’ at api.c:676:3:
/usr/include/x86_64-linux-gnu/bits/string_fortified.h:106:10: warning: ‘__builtin___strncpy_chk’ output may be truncated copying between 0 and 255 bytes from a string of length 4352 [-Wstringop-truncation]
106 | return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Mon, 12 Apr 2021 15:25:00 +0000 (09:25 -0600)]
wrapper.c: Fix fprintf argument warning
Fix a warning in cgroup_add_value_string() where '%d' was
being passed to fprintf when it should have been using '%ld'.
wrapper.c: In function ‘cgroup_add_value_string’:
wrapper.c:207:51: warning: format ‘%d’ expects argument of type ‘int’,
but argument 3 has type ‘long unsigned int’ [-Wformat=]
207 | fprintf(stderr, "value exceeds the maximum of %d
characters\n",
| ~^
| |
| int
| %ld
208 | sizeof(cntl_value->value) - 1);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| long unsigned int
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Mon, 12 Apr 2021 15:18:56 +0000 (09:18 -0600)]
api.c: Fix string truncation warnings
Fix two snprintf string truncation warnings in
cg_build_path_locked().
api.c:1475:38: warning: ‘snprintf’ output may be truncated before the
last format character [-Wformat-truncation=]
1475 | snprintf(path, FILENAME_MAX, "%s/",
| ^
api.c:1475:5: note: ‘snprintf’ output between 2 and 4097 bytes into a
destination of size 4096
1475 | snprintf(path, FILENAME_MAX, "%s/",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1476 | cg_mount_table[i].mount.path);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
api.c:1470:40: warning: ‘/’ directive output may be truncated writing 1
byte into a region of size between 0 and 4095 [-Wformat-truncation=]
1470 | snprintf(path, FILENAME_MAX, "%s/%s/",
| ^
api.c:1470:5: note: ‘snprintf’ output 3 or more bytes (assuming 4098)
into a destination of size 4096
1470 | snprintf(path, FILENAME_MAX, "%s/%s/",
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1471 | cg_mount_table[i].mount.path,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1472 | cg_namespace_table[i]);
| ~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Wed, 31 Mar 2021 16:44:11 +0000 (16:44 +0000)]
tools: Create a cgset library for testing purposes
Create libcgset.la so that functions within cgset can be
unit tested.
A functional test would be preferable in this case, but I'm
looking to test a very specific scenario - where there's an
'=' sign in the value of a setting's name/value pair. To the
best of my knowledge, only the rdma (v1) and io (v2)
controllers have settings that utilize an '=' in such a fashion.
I can't think of an easy way to test rdma across our test fleet,
and our automated systems don't support the v2 io controller
yet. Thus a unit test for now.
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Tom Hromatka [Tue, 30 Mar 2021 18:54:06 +0000 (18:54 +0000)]
cgset: Fix parsing of name/values with an '=' in the value
Fix parsing of name/value pairs that contain an '='
character in the value string. For example, the io.max
setting utilizes the '=' character:
cgset -r io.max="8:16 wbps=1024" foo
Fixes: https://github.com/libcgroup/libcgroup/issues/33 Reported-by: Santiago Ruano Rincón <santiago.ruano-rincon@imt-atlantique.fr> Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>