capsicum-test: Update for O_BENEATH removal
Update the tests to check O_RESOLVE_BENEATH instead. If this looks reasonable, I'll try to upstream this change. This keeps a compat fallback for O_BENEATH since the Linux port still has/had O_BENEATH with "no .., no absolute paths" semantics. Test Plan: `/usr/tests/sys/capsicum/capsicum-test -u 977` passes and runs the O_RESOLVE_BENEATH tests. Reviewed By: markj Differential Revision: https://reviews.freebsd.org/D29016
This commit is contained in:
parent
34cc08e336
commit
8cf5812af4
@ -341,22 +341,26 @@ FORK_TEST_F(OpenatTest, InCapabilityMode) {
|
|||||||
EXPECT_OPENAT_FAIL_TRAVERSAL(sub_fd_, "/etc/passwd", O_RDONLY);
|
EXPECT_OPENAT_FAIL_TRAVERSAL(sub_fd_, "/etc/passwd", O_RDONLY);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef O_BENEATH
|
#if !defined(O_RESOLVE_BENEATH) && defined(O_BENEATH)
|
||||||
|
#define O_RESOLVE_BENEATH O_BENEATH
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef O_RESOLVE_BENEATH
|
||||||
TEST_F(OpenatTest, WithFlag) {
|
TEST_F(OpenatTest, WithFlag) {
|
||||||
CheckPolicing(O_BENEATH);
|
CheckPolicing(O_RESOLVE_BENEATH);
|
||||||
|
|
||||||
// Check with AT_FDCWD.
|
// Check with AT_FDCWD.
|
||||||
EXPECT_OPEN_OK(openat(AT_FDCWD, "topfile", O_RDONLY|O_BENEATH));
|
EXPECT_OPEN_OK(openat(AT_FDCWD, "topfile", O_RDONLY|O_RESOLVE_BENEATH));
|
||||||
EXPECT_OPEN_OK(openat(AT_FDCWD, "subdir/bottomfile", O_RDONLY|O_BENEATH));
|
EXPECT_OPEN_OK(openat(AT_FDCWD, "subdir/bottomfile", O_RDONLY|O_RESOLVE_BENEATH));
|
||||||
|
|
||||||
// Can't open paths starting with "/" with O_BENEATH specified.
|
// Can't open paths starting with "/" with O_RESOLVE_BENEATH specified.
|
||||||
EXPECT_OPENAT_FAIL_TRAVERSAL(AT_FDCWD, "/etc/passwd", O_RDONLY|O_BENEATH);
|
EXPECT_OPENAT_FAIL_TRAVERSAL(AT_FDCWD, "/etc/passwd", O_RDONLY|O_RESOLVE_BENEATH);
|
||||||
EXPECT_OPENAT_FAIL_TRAVERSAL(dir_fd_, "/etc/passwd", O_RDONLY|O_BENEATH);
|
EXPECT_OPENAT_FAIL_TRAVERSAL(dir_fd_, "/etc/passwd", O_RDONLY|O_RESOLVE_BENEATH);
|
||||||
EXPECT_OPENAT_FAIL_TRAVERSAL(sub_fd_, "/etc/passwd", O_RDONLY|O_BENEATH);
|
EXPECT_OPENAT_FAIL_TRAVERSAL(sub_fd_, "/etc/passwd", O_RDONLY|O_RESOLVE_BENEATH);
|
||||||
}
|
}
|
||||||
|
|
||||||
FORK_TEST_F(OpenatTest, WithFlagInCapabilityMode) {
|
FORK_TEST_F(OpenatTest, WithFlagInCapabilityMode) {
|
||||||
EXPECT_OK(cap_enter()); // Enter capability mode
|
EXPECT_OK(cap_enter()); // Enter capability mode
|
||||||
CheckPolicing(O_BENEATH);
|
CheckPolicing(O_RESOLVE_BENEATH);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user