git: 6655bec4e268 - main - tests/unix_stream: test that send(2) of zero bytes is successful
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 14 Apr 2024 17:21:42 UTC
The branch main has been updated by glebius: URL: https://cgit.FreeBSD.org/src/commit/?id=6655bec4e268eeb779f5e57e5914761cf86b5f8a commit 6655bec4e268eeb779f5e57e5914761cf86b5f8a Author: Gleb Smirnoff <glebius@FreeBSD.org> AuthorDate: 2024-04-14 17:19:20 +0000 Commit: Gleb Smirnoff <glebius@FreeBSD.org> CommitDate: 2024-04-14 17:19:20 +0000 tests/unix_stream: test that send(2) of zero bytes is successful Put this simple test into an existing file. We don't have a designated file for all unix/stream tests. There is extensive unix_seqpacket_test, but (at least right now) unix/seqpacket is not a superset of unix/stream, but a different implementation. We have one file that does one test for unix/stream - unix_socketpair_test. So rename it to unix_stream and start collecting all unix/stream tests in it. --- ObsoleteFiles.inc | 3 ++ tests/sys/kern/Makefile | 2 +- .../kern/{unix_socketpair_test.c => unix_stream.c} | 32 ++++++++++++++++++---- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc index e7d62afdd764..50f426085eff 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 bc42f53a2849..c5107ce8f9fe 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 b994b791a2ed..d57cfad020fa 100644 --- a/tests/sys/kern/unix_socketpair_test.c +++ b/tests/sys/kern/unix_stream.c @@ -37,23 +37,30 @@ #include <atf-c.h> +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(); }