mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 02:01:18 -04:00
selftests/cgroup: Fix cg_read_strcmp() empty string comparison
cg_read_strcmp() allocated a buffer sized to strlen(expected) + 1,
then passed it to read_text() which calls read(fd, buf, size-1).
When comparing against an empty string (""), strlen("") = 0 gives a
1-byte buffer, and read() is asked to read 0 bytes. The file content
is never actually read, so strcmp("", buf) always returns 0 regardless
of the real content. This caused cg_test_proc_killed() to always
report the cgroup as empty immediately, making OOM tests pass without
verifying that processes were killed.
Signed-off-by: Hongfu Li <lihongfu@kylinos.cn>
Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
@@ -106,8 +106,9 @@ int cg_read_strcmp(const char *cgroup, const char *control,
|
||||
/* Handle the case of comparing against empty string */
|
||||
if (!expected)
|
||||
return -1;
|
||||
else
|
||||
size = strlen(expected) + 1;
|
||||
|
||||
/* needs size > 1, otherwise cg_read() reads 0 bytes */
|
||||
size = (expected[0] == '\0') ? 2 : strlen(expected) + 1;
|
||||
|
||||
buf = malloc(size);
|
||||
if (!buf)
|
||||
|
||||
Reference in New Issue
Block a user