Skip to content

Commit 538b5fd

Browse files
committed
selftests/landlock: Add tests for invalid use of quiet flag
Signed-off-by: Tingmao Wang <[email protected]>
1 parent 1d5073c commit 538b5fd

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed

tools/testing/selftests/landlock/base_test.c

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -526,4 +526,61 @@ TEST(cred_transfer)
526526
EXPECT_EQ(EACCES, errno);
527527
}
528528

529+
TEST(useless_quiet_rule)
530+
{
531+
struct landlock_ruleset_attr ruleset_attr = {
532+
.handled_access_fs = LANDLOCK_ACCESS_FS_READ_DIR,
533+
.quiet_access_fs = 0,
534+
};
535+
struct landlock_path_beneath_attr path_beneath_attr = {
536+
.allowed_access = LANDLOCK_ACCESS_FS_READ_DIR,
537+
};
538+
int ruleset_fd, root_fd;
539+
540+
drop_caps(_metadata);
541+
ruleset_fd =
542+
landlock_create_ruleset(&ruleset_attr, sizeof(ruleset_attr), 0);
543+
ASSERT_LE(0, ruleset_fd);
544+
545+
root_fd = open("/", O_PATH | O_CLOEXEC);
546+
ASSERT_LE(0, root_fd);
547+
path_beneath_attr.parent_fd = root_fd;
548+
ASSERT_EQ(-1, landlock_add_rule(ruleset_fd, LANDLOCK_RULE_PATH_BENEATH,
549+
&path_beneath_attr,
550+
LANDLOCK_ADD_RULE_QUIET));
551+
ASSERT_EQ(EINVAL, errno);
552+
553+
/* Check that the rule had not been added. */
554+
ASSERT_EQ(0, close(root_fd));
555+
enforce_ruleset(_metadata, ruleset_fd);
556+
ASSERT_EQ(0, close(ruleset_fd));
557+
558+
ASSERT_EQ(-1, open("/", O_RDONLY | O_DIRECTORY | O_CLOEXEC));
559+
ASSERT_EQ(EACCES, errno);
560+
}
561+
562+
TEST(invalid_quiet_bits_1)
563+
{
564+
struct landlock_ruleset_attr ruleset_attr = {
565+
.handled_access_fs = LANDLOCK_ACCESS_FS_READ_DIR,
566+
.quiet_access_fs = LANDLOCK_ACCESS_FS_WRITE_FILE,
567+
};
568+
569+
ASSERT_EQ(-1, landlock_create_ruleset(&ruleset_attr,
570+
sizeof(ruleset_attr), 0));
571+
ASSERT_EQ(EINVAL, errno);
572+
}
573+
574+
TEST(invalid_quiet_bits_2)
575+
{
576+
struct landlock_ruleset_attr ruleset_attr = {
577+
.handled_access_fs = LANDLOCK_ACCESS_FS_READ_DIR,
578+
.quiet_access_fs = 1ULL << 63,
579+
};
580+
581+
ASSERT_EQ(-1, landlock_create_ruleset(&ruleset_attr,
582+
sizeof(ruleset_attr), 0));
583+
ASSERT_EQ(EINVAL, errno);
584+
}
585+
529586
TEST_HARNESS_MAIN

0 commit comments

Comments
 (0)