aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorAlex Richardson <arichardson@FreeBSD.org>2021-03-12 17:12:10 +0000
committerAlex Richardson <arichardson@FreeBSD.org>2021-03-17 22:22:50 +0000
commitc4a6d3b183af4f34ddd7637eeb8e2ad2008f914c (patch)
treeb613c1b8ee37927eea42fbd8d967deac01bfca55 /contrib
parent61271e7bba67be5bff350c2ab88eed25d46ca061 (diff)
downloadsrc-c4a6d3b183af4f34ddd7637eeb8e2ad2008f914c.tar.gz
src-c4a6d3b183af4f34ddd7637eeb8e2ad2008f914c.zip
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 (cherry picked from commit 8cf5812af4b7f4933983822ff8e1e9185818fbef)
Diffstat (limited to 'contrib')
-rw-r--r--contrib/capsicum-test/openat.cc22
1 files changed, 13 insertions, 9 deletions
diff --git a/contrib/capsicum-test/openat.cc b/contrib/capsicum-test/openat.cc
index 5447558cde89..e3f0c2a731f8 100644
--- a/contrib/capsicum-test/openat.cc
+++ b/contrib/capsicum-test/openat.cc
@@ -341,22 +341,26 @@ FORK_TEST_F(OpenatTest, InCapabilityMode) {
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) {
- CheckPolicing(O_BENEATH);
+ CheckPolicing(O_RESOLVE_BENEATH);
// Check with AT_FDCWD.
- EXPECT_OPEN_OK(openat(AT_FDCWD, "topfile", O_RDONLY|O_BENEATH));
- EXPECT_OPEN_OK(openat(AT_FDCWD, "subdir/bottomfile", 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_RESOLVE_BENEATH));
- // Can't open paths starting with "/" with O_BENEATH specified.
- EXPECT_OPENAT_FAIL_TRAVERSAL(AT_FDCWD, "/etc/passwd", O_RDONLY|O_BENEATH);
- EXPECT_OPENAT_FAIL_TRAVERSAL(dir_fd_, "/etc/passwd", O_RDONLY|O_BENEATH);
- EXPECT_OPENAT_FAIL_TRAVERSAL(sub_fd_, "/etc/passwd", O_RDONLY|O_BENEATH);
+ // Can't open paths starting with "/" with O_RESOLVE_BENEATH specified.
+ EXPECT_OPENAT_FAIL_TRAVERSAL(AT_FDCWD, "/etc/passwd", O_RDONLY|O_RESOLVE_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_RESOLVE_BENEATH);
}
FORK_TEST_F(OpenatTest, WithFlagInCapabilityMode) {
EXPECT_OK(cap_enter()); // Enter capability mode
- CheckPolicing(O_BENEATH);
+ CheckPolicing(O_RESOLVE_BENEATH);
}
#endif