aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGleb Smirnoff <glebius@FreeBSD.org>2024-04-14 17:19:20 +0000
committerGleb Smirnoff <glebius@FreeBSD.org>2024-04-14 17:19:20 +0000
commit6655bec4e268eeb779f5e57e5914761cf86b5f8a (patch)
tree67fc31c4352252a2d8ff0f8773c89aa1e8dec8c0 /tests
parenteac87a7a7e26086fc3da8a31ce06c4c1a8ee9ef5 (diff)
downloadsrc-6655bec4e268eeb779f5e57e5914761cf86b5f8a.tar.gz
src-6655bec4e268eeb779f5e57e5914761cf86b5f8a.zip
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.
Diffstat (limited to 'tests')
-rw-r--r--tests/sys/kern/Makefile2
-rw-r--r--tests/sys/kern/unix_stream.c (renamed from tests/sys/kern/unix_socketpair_test.c)32
2 files changed, 27 insertions, 7 deletions
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
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();
}