mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-28 05:34:13 -05:00
selftests/landlock: Extend tests for landlock_restrict_self(2)'s flags
Add the base_test's restrict_self_fd_flags tests to align with previous restrict_self_fd tests but with the new LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF flag. Add the restrict_self_flags tests to check that LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF, LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON, and LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF are valid but not the next bit. Some checks are similar to restrict_self_checks_ordering's ones. Cc: Günther Noack <gnoack@google.com> Cc: Paul Moore <paul@paul-moore.com> Link: https://lore.kernel.org/r/20250320190717.2287696-22-mic@digikod.net Signed-off-by: Mickaël Salaün <mic@digikod.net>
This commit is contained in:
@@ -288,6 +288,77 @@ TEST(restrict_self_fd)
|
||||
EXPECT_EQ(EBADFD, errno);
|
||||
}
|
||||
|
||||
TEST(restrict_self_fd_flags)
|
||||
{
|
||||
int fd;
|
||||
|
||||
fd = open("/dev/null", O_RDONLY | O_CLOEXEC);
|
||||
ASSERT_LE(0, fd);
|
||||
|
||||
/*
|
||||
* LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF accepts -1 but not any file
|
||||
* descriptor.
|
||||
*/
|
||||
EXPECT_EQ(-1, landlock_restrict_self(
|
||||
fd, LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF));
|
||||
EXPECT_EQ(EBADFD, errno);
|
||||
}
|
||||
|
||||
TEST(restrict_self_flags)
|
||||
{
|
||||
const __u32 last_flag = LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF;
|
||||
|
||||
/* Tests invalid flag combinations. */
|
||||
|
||||
EXPECT_EQ(-1, landlock_restrict_self(-1, last_flag << 1));
|
||||
EXPECT_EQ(EINVAL, errno);
|
||||
|
||||
EXPECT_EQ(-1, landlock_restrict_self(-1, -1));
|
||||
EXPECT_EQ(EINVAL, errno);
|
||||
|
||||
/* Tests valid flag combinations. */
|
||||
|
||||
EXPECT_EQ(-1, landlock_restrict_self(-1, 0));
|
||||
EXPECT_EQ(EBADF, errno);
|
||||
|
||||
EXPECT_EQ(-1, landlock_restrict_self(
|
||||
-1, LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF));
|
||||
EXPECT_EQ(EBADF, errno);
|
||||
|
||||
EXPECT_EQ(-1,
|
||||
landlock_restrict_self(
|
||||
-1,
|
||||
LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF |
|
||||
LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF));
|
||||
EXPECT_EQ(EBADF, errno);
|
||||
|
||||
EXPECT_EQ(-1,
|
||||
landlock_restrict_self(
|
||||
-1,
|
||||
LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON |
|
||||
LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF));
|
||||
EXPECT_EQ(EBADF, errno);
|
||||
|
||||
EXPECT_EQ(-1, landlock_restrict_self(
|
||||
-1, LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON));
|
||||
EXPECT_EQ(EBADF, errno);
|
||||
|
||||
EXPECT_EQ(-1,
|
||||
landlock_restrict_self(
|
||||
-1, LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF |
|
||||
LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON));
|
||||
EXPECT_EQ(EBADF, errno);
|
||||
|
||||
/* Tests with an invalid ruleset_fd. */
|
||||
|
||||
EXPECT_EQ(-1, landlock_restrict_self(
|
||||
-2, LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF));
|
||||
EXPECT_EQ(EBADF, errno);
|
||||
|
||||
EXPECT_EQ(0, landlock_restrict_self(
|
||||
-1, LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF));
|
||||
}
|
||||
|
||||
TEST(ruleset_fd_io)
|
||||
{
|
||||
struct landlock_ruleset_attr ruleset_attr = {
|
||||
|
||||
Reference in New Issue
Block a user