diff options
| author | Mark Johnston <markj@FreeBSD.org> | 2026-04-20 15:07:20 +0000 |
|---|---|---|
| committer | Mark Johnston <markj@FreeBSD.org> | 2026-04-20 15:07:20 +0000 |
| commit | d3d0466cae546254c50c80cf3e0c060bbbbba53c (patch) | |
| tree | a0464d2c1c325dfabc92c6662466d08ce06f7cb9 | |
| parent | 18de44e7b44209d94999523a93d83031e26a5719 (diff) | |
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
| -rw-r--r-- | tests/sys/netinet/socket_afinet.c | 14 |
1 files 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); } /* |
