Skip to content

Commit 0f42f5b

Browse files
gnoackl0kod
authored andcommitted
selftests/landlock: Audit test for LANDLOCK_ACCESS_FS_RESOLVE_UNIX
Add an audit test to check that Landlock denials from LANDLOCK_ACCESS_FS_RESOLVE_UNIX result in audit logs in the expected format. (There is one audit test for each filesystem access right, so we should add one for LANDLOCK_ACCESS_FS_RESOLVE_UNIX as well.) Signed-off-by: Günther Noack <gnoack3000@gmail.com> Link: https://lore.kernel.org/r/20260327164838.38231-10-gnoack3000@gmail.com Signed-off-by: Mickaël Salaün <mic@digikod.net>
1 parent 9da41c6 commit 0f42f5b

1 file changed

Lines changed: 40 additions & 0 deletions

File tree

tools/testing/selftests/landlock/fs_test.c

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7961,6 +7961,46 @@ TEST_F(audit_layout1, ioctl_dev)
79617961
EXPECT_EQ(1, records.domain);
79627962
}
79637963

7964+
TEST_F(audit_layout1, resolve_unix)
7965+
{
7966+
struct audit_records records;
7967+
const char *const path = "sock";
7968+
int srv_fd, cli_fd, status;
7969+
pid_t child_pid;
7970+
7971+
srv_fd = set_up_named_unix_server(_metadata, SOCK_STREAM, path);
7972+
7973+
child_pid = fork();
7974+
ASSERT_LE(0, child_pid);
7975+
if (!child_pid) {
7976+
drop_access_rights(_metadata,
7977+
&(struct landlock_ruleset_attr){
7978+
.handled_access_fs = ACCESS_ALL,
7979+
});
7980+
7981+
cli_fd = socket(AF_UNIX, SOCK_STREAM, 0);
7982+
ASSERT_LE(0, cli_fd);
7983+
EXPECT_EQ(EACCES,
7984+
test_connect_named_unix(_metadata, cli_fd, path));
7985+
7986+
EXPECT_EQ(0, close(cli_fd));
7987+
_exit(_metadata->exit_code);
7988+
}
7989+
7990+
ASSERT_EQ(child_pid, waitpid(child_pid, &status, 0));
7991+
EXPECT_EQ(1, WIFEXITED(status));
7992+
EXPECT_EQ(EXIT_SUCCESS, WEXITSTATUS(status));
7993+
7994+
EXPECT_EQ(0, matches_log_fs_extra(_metadata, self->audit_fd,
7995+
"fs\\.resolve_unix", path, NULL));
7996+
7997+
EXPECT_EQ(0, audit_count_records(self->audit_fd, &records));
7998+
EXPECT_EQ(0, records.access);
7999+
EXPECT_EQ(1, records.domain);
8000+
8001+
EXPECT_EQ(0, close(srv_fd));
8002+
}
8003+
79648004
TEST_F(audit_layout1, mount)
79658005
{
79668006
struct audit_records records;

0 commit comments

Comments
 (0)