mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-10-28 11:25:21 +01:00
sys/tests/kern/pdopenpid: pdopenpid(2) is allowed in cap mode
Adjust test to check for ECAPMODE using grandchild instead of child. Childrens can be opened even in cap mode. Add test for the later. Reviewed by: markj Sponsored by: The FreeBSD Foundation MFC after: 1 week Differential revision: https://reviews.freebsd.org/D58989
This commit is contained in:
1 parent
1ac08a43cf
commit
ddf62c83fc
1 file changed
+34
-4
@@ -343,10 +343,10 @@ ATF_TC_BODY(pdopenpid_esrch, tc)
|
||||
}
|
||||
|
||||
/*
|
||||
* pdopenpid should fail in capability mode.
|
||||
* pdopenpid works for children in capability mode.
|
||||
*/
|
||||
ATF_TC_WITHOUT_HEAD(pdopenpid_capmode);
|
||||
ATF_TC_BODY(pdopenpid_capmode, tc)
|
||||
ATF_TC_WITHOUT_HEAD(pdopenpid_child);
|
||||
ATF_TC_BODY(pdopenpid_child, tc)
|
||||
{
|
||||
pid_t child, parent;
|
||||
|
||||
@@ -362,7 +362,36 @@ ATF_TC_BODY(pdopenpid_capmode, tc)
|
||||
}
|
||||
|
||||
ATF_REQUIRE_MSG(cap_enter() == 0, "cap_enter: %s", strerror(errno));
|
||||
ATF_REQUIRE_ERRNO(ECAPMODE, pdopenpid(child, 0) < 0);
|
||||
ATF_REQUIRE_MSG(pdopenpid(child, 0) >= 0, "pdopenpid: %s",
|
||||
strerror(errno));
|
||||
}
|
||||
|
||||
/*
|
||||
* pdopenpid should fail in capability mode.
|
||||
*/
|
||||
ATF_TC_WITHOUT_HEAD(pdopenpid_capmode);
|
||||
ATF_TC_BODY(pdopenpid_capmode, tc)
|
||||
{
|
||||
pid_t child, grandchild;
|
||||
|
||||
ATF_REQUIRE_FEATURE("security_capability_mode");
|
||||
|
||||
child = vfork();
|
||||
ATF_REQUIRE_MSG(child >= 0, "fork: %s", strerror(errno));
|
||||
if (child == 0) {
|
||||
grandchild = fork();
|
||||
ATF_REQUIRE_MSG(grandchild >= 0, "fork: %s", strerror(errno));
|
||||
if (grandchild == 0) {
|
||||
for (;;)
|
||||
sleep(1);
|
||||
} else {
|
||||
_exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
ATF_REQUIRE_MSG(cap_enter() == 0, "cap_enter: %s", strerror(errno));
|
||||
ATF_REQUIRE_ERRNO(ECAPMODE, pdopenpid(grandchild, 0) < 0);
|
||||
kill(grandchild, SIGKILL);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -759,6 +788,7 @@ ATF_TP_ADD_TCS(tp)
|
||||
ATF_TP_ADD_TC(tp, pdopenpid_einval);
|
||||
ATF_TP_ADD_TC(tp, pdopenpid_emfile);
|
||||
ATF_TP_ADD_TC(tp, pdopenpid_esrch);
|
||||
ATF_TP_ADD_TC(tp, pdopenpid_child);
|
||||
ATF_TP_ADD_TC(tp, pdopenpid_capmode);
|
||||
ATF_TP_ADD_TC(tp, pdopenpid_pdfork_then_open);
|
||||
ATF_TP_ADD_TC(tp, pdopenpid_fork_then_open);
|
||||
|
||||
Reference in new issue
Block a user