Commit e32e6f02 authored by Hongfu Li's avatar Hongfu Li Committed by Tejun Heo
Browse files

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: default avatarHongfu Li <lihongfu@kylinos.cn>
Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parent 796ad622
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -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)