git: 2d252934da51 - main - capsicum: Verify that openat("/", "..") fails with ENOTCAPABLE
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 25 Apr 2023 14:08:27 UTC
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=2d252934da51a4857662d3ae0e9d81c8f2833ff3
commit 2d252934da51a4857662d3ae0e9d81c8f2833ff3
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2023-04-25 13:54:47 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2023-04-25 13:54:47 +0000
capsicum: Verify that openat("/", "..") fails with ENOTCAPABLE
Add a regression test for a718431c30a5 ("lookup(): ensure that
openat("/", "..", O_RESOLVE_BENEATH) fails").
MFC after: 1 week
Sponsored by: The FreeBSD Foundation
---
tests/sys/vfs/lookup_cap_dotdot.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/tests/sys/vfs/lookup_cap_dotdot.c b/tests/sys/vfs/lookup_cap_dotdot.c
index e023a50f8152..916129f7067f 100644
--- a/tests/sys/vfs/lookup_cap_dotdot.c
+++ b/tests/sys/vfs/lookup_cap_dotdot.c
@@ -233,6 +233,31 @@ ATF_TC_BODY(lookup_cap_dotdot__negative, tc)
ATF_REQUIRE_ERRNO(ENOTCAPABLE, openat(dirfd, "../testdir/d1/f1", O_RDONLY) < 0);
}
+ATF_TC(lookup_cap_dotdot__root);
+ATF_TC_HEAD(lookup_cap_dotdot__root, tc)
+{
+ atf_tc_set_md_var(tc, "descr", "Validate cap-mode /.. lookup fails");
+}
+
+ATF_TC_BODY(lookup_cap_dotdot__root, tc)
+{
+ int dfd, dfd2;
+
+ check_capsicum();
+
+ dfd = open("/", O_DIRECTORY);
+ ATF_REQUIRE(dfd >= 0);
+
+ dfd2 = openat(dfd, "..", O_DIRECTORY);
+ ATF_REQUIRE(dfd2 >= 0);
+ ATF_REQUIRE(close(dfd2) == 0);
+
+ ATF_REQUIRE(cap_enter() >= 0);
+
+ dfd2 = openat(dfd, "..", O_DIRECTORY);
+ ATF_REQUIRE_ERRNO(ENOTCAPABLE, openat(dfd, "..", O_DIRECTORY));
+}
+
ATF_TP_ADD_TCS(tp)
{
@@ -244,6 +269,7 @@ ATF_TP_ADD_TCS(tp)
ATF_TP_ADD_TC(tp, lookup_cap_dotdot__basic);
ATF_TP_ADD_TC(tp, lookup_cap_dotdot__advanced);
ATF_TP_ADD_TC(tp, lookup_cap_dotdot__negative);
+ ATF_TP_ADD_TC(tp, lookup_cap_dotdot__root);
return (atf_no_error());
}