Skip site navigation (1)Skip section navigation (2)
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>