diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index e7d62afdd76..50f426085ef 100644 --- a/ObsoleteFiles.inc +++ b/ObsoleteFiles.inc @@ -51,6 +51,9 @@ # xargs -n1 | sort | uniq -d; # done +# 20240414: unix_socketpair_test renamed +OLD_FILES+=usr/tests/sys/kern/unix_socketpair_test + # 20240406: new clang import which bumps version from 17 to 18 OLD_FILES+=usr/lib/clang/17/include/__clang_cuda_builtin_vars.h OLD_FILES+=usr/lib/clang/17/include/__clang_cuda_cmath.h diff --git a/tests/sys/kern/Makefile b/tests/sys/kern/Makefile index bc42f53a284..c5107ce8f9f 100644 --- a/tests/sys/kern/Makefile +++ b/tests/sys/kern/Makefile @@ -50,7 +50,7 @@ ATF_TESTS_C+= unix_passfd_stream TEST_METADATA.unix_passfd_stream+= is_exclusive="true" ATF_TESTS_C+= unix_seqpacket_test TEST_METADATA.unix_seqpacket_test+= timeout="15" -ATF_TESTS_C+= unix_socketpair_test +ATF_TESTS_C+= unix_stream ATF_TESTS_C+= waitpid_nohang ATF_TESTS_C+= pdeathsig ATF_TESTS_C+= sigsys diff --git a/tests/sys/kern/unix_socketpair_test.c b/tests/sys/kern/unix_stream.c similarity index 83% rename from tests/sys/kern/unix_socketpair_test.c rename to tests/sys/kern/unix_stream.c index b994b791a2e..d57cfad020f 100644 --- a/tests/sys/kern/unix_socketpair_test.c +++ b/tests/sys/kern/unix_stream.c @@ -37,23 +37,30 @@ #include +static void +do_socketpair(int *sv) +{ + int s; + + s = socketpair(PF_LOCAL, SOCK_STREAM, 0, sv); + ATF_REQUIRE_EQ(0, s); + ATF_REQUIRE(sv[0] >= 0); + ATF_REQUIRE(sv[1] >= 0); + ATF_REQUIRE(sv[0] != sv[1]); +} + /* getpeereid(3) should work with stream sockets created via socketpair(2) */ ATF_TC_WITHOUT_HEAD(getpeereid); ATF_TC_BODY(getpeereid, tc) { int sv[2]; - int s; uid_t real_euid, euid; gid_t real_egid, egid; real_euid = geteuid(); real_egid = getegid(); - s = socketpair(PF_LOCAL, SOCK_STREAM, 0, sv); - ATF_CHECK_EQ(0, s); - ATF_CHECK(sv[0] >= 0); - ATF_CHECK(sv[1] >= 0); - ATF_CHECK(sv[0] != sv[1]); + do_socketpair(sv); ATF_REQUIRE_EQ(0, getpeereid(sv[0], &euid, &egid)); ATF_CHECK_EQ(real_euid, euid); @@ -67,10 +74,23 @@ ATF_TC_BODY(getpeereid, tc) close(sv[1]); } +/* Sending zero bytes should succeed (once regressed in aba79b0f4a3f). */ +ATF_TC_WITHOUT_HEAD(send_0); +ATF_TC_BODY(send_0, tc) +{ + int sv[2]; + + do_socketpair(sv); + ATF_REQUIRE(send(sv[0], sv, 0, 0) == 0); + close(sv[0]); + close(sv[1]); +} + ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, getpeereid); + ATF_TP_ADD_TC(tp, send_0); return atf_no_error(); }