Commit 2bfed7d2 authored by Jann Horn's avatar Jann Horn Committed by Kees Cook
Browse files

selftests/seccomp: Don't call read() on TTY from background pgrp



Since commit 92d25637 ("kselftest: signal all child processes"), tests
are executed in background process groups. This means that trying to read
from stdin now throws SIGTTIN when stdin is a TTY, which breaks some
seccomp selftests that try to use read(0, NULL, 0) as a dummy syscall.

The simplest way to fix that is probably to just use -1 instead of 0 as
the dummy read()'s FD.

Fixes: 92d25637 ("kselftest: signal all child processes")
Signed-off-by: default avatarJann Horn <jannh@google.com>
Signed-off-by: default avatarKees Cook <keescook@chromium.org>
Link: https://lore.kernel.org/r/20220319010011.1374622-1-jannh@google.com
parent ce522ba9
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -955,7 +955,7 @@ TEST(ERRNO_valid)
	ASSERT_EQ(0, ret);

	EXPECT_EQ(parent, syscall(__NR_getppid));
	EXPECT_EQ(-1, read(0, NULL, 0));
	EXPECT_EQ(-1, read(-1, NULL, 0));
	EXPECT_EQ(E2BIG, errno);
}

@@ -974,7 +974,7 @@ TEST(ERRNO_zero)

	EXPECT_EQ(parent, syscall(__NR_getppid));
	/* "errno" of 0 is ok. */
	EXPECT_EQ(0, read(0, NULL, 0));
	EXPECT_EQ(0, read(-1, NULL, 0));
}

/*
@@ -995,7 +995,7 @@ TEST(ERRNO_capped)
	ASSERT_EQ(0, ret);

	EXPECT_EQ(parent, syscall(__NR_getppid));
	EXPECT_EQ(-1, read(0, NULL, 0));
	EXPECT_EQ(-1, read(-1, NULL, 0));
	EXPECT_EQ(4095, errno);
}

@@ -1026,7 +1026,7 @@ TEST(ERRNO_order)
	ASSERT_EQ(0, ret);

	EXPECT_EQ(parent, syscall(__NR_getppid));
	EXPECT_EQ(-1, read(0, NULL, 0));
	EXPECT_EQ(-1, read(-1, NULL, 0));
	EXPECT_EQ(12, errno);
}

@@ -2623,7 +2623,7 @@ void *tsync_sibling(void *data)
	ret = prctl(PR_GET_NO_NEW_PRIVS, 0, 0, 0, 0);
	if (!ret)
		return (void *)SIBLING_EXIT_NEWPRIVS;
	read(0, NULL, 0);
	read(-1, NULL, 0);
	return (void *)SIBLING_EXIT_UNKILLED;
}