Date: Mon, 20 Apr 2026 15:07:48 +0000 From: Mark Johnston <markj@FreeBSD.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: git: d3d0466cae54 - main - tests/socket_afinet: Fix the bind_connected_port test Message-ID: <69e64144.2747b.1db98791@gitrepo.freebsd.org>
index | next in thread | raw e-mail
The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=d3d0466cae546254c50c80cf3e0c060bbbbba53c commit d3d0466cae546254c50c80cf3e0c060bbbbba53c Author: Mark Johnston <markj@FreeBSD.org> AuthorDate: 2026-04-20 15:07:20 +0000 Commit: Mark Johnston <markj@FreeBSD.org> CommitDate: 2026-04-20 15:07:20 +0000 tests/socket_afinet: Fix the bind_connected_port test The test verifies that a socket can bind to a local address assigned by connect(2) to a different socket. It was however trying to bind to the wrong address, and the check of the result was inverted, so this went unnoticed. It also needs to set SO_REUSEADDR for this to succeed. Reported by: glebius MFC after: 1 week --- tests/sys/netinet/socket_afinet.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/sys/netinet/socket_afinet.c b/tests/sys/netinet/socket_afinet.c index cfa2c9aa1706..31c98f9bfdb1 100644 --- a/tests/sys/netinet/socket_afinet.c +++ b/tests/sys/netinet/socket_afinet.c @@ -513,6 +513,7 @@ bind_connected_port_test(const atf_tc_t *tc, int domain) struct sockaddr_in sin; struct sockaddr_in6 sin6; struct sockaddr *sinp; + socklen_t slen; int error, sd[3], tmp; bool res; @@ -553,16 +554,15 @@ bind_connected_port_test(const atf_tc_t *tc, int domain) sin6.sin6_addr = in6addr_loopback; error = connect(sd[1], sinp, sinp->sa_len); ATF_REQUIRE_MSG(error == 0, "connect failed: %s", strerror(errno)); - tmp = accept(sd[0], NULL, NULL); + slen = sinp->sa_len; + tmp = accept(sd[0], sinp, &slen); ATF_REQUIRE_MSG(tmp >= 0, "accept failed: %s", strerror(errno)); - ATF_REQUIRE(close(sd[0]) == 0); - sd[0] = tmp; /* bind() should succeed even from an unprivileged user. */ - res = child_bind(tc, SOCK_STREAM, sinp, 0, false); - ATF_REQUIRE(!res); - res = child_bind(tc, SOCK_STREAM, sinp, 0, true); - ATF_REQUIRE(!res); + res = child_bind_priv(tc, SOCK_STREAM, sinp, SO_REUSEADDR); + ATF_REQUIRE(res); + res = child_bind_unpriv(tc, SOCK_STREAM, sinp, SO_REUSEADDR); + ATF_REQUIRE(res); } /*home | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?69e64144.2747b.1db98791>
