git: 2fcbd5a75b5a - main - netgraph/ksocket tests: Bind to a specific address
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 20 Jun 2025 22:36:17 UTC
The branch main has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=2fcbd5a75b5adea9830b6688f3ae529bdfbc28f0
commit 2fcbd5a75b5adea9830b6688f3ae529bdfbc28f0
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2025-06-20 22:33:42 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2025-06-20 22:35:38 +0000
netgraph/ksocket tests: Bind to a specific address
Otherwise we rely on connect(INADDR_ANY) connecting to a socket bound to
an arbitrary host address, but as of commit cd240957d7ba this is
disallowed by default.
Reported by: Siva Mahadevan <me@svmhdvn.name>
Fixes: cd240957d7ba ("netinet: Disallow connections to INADDR_ANY")
---
tests/sys/netgraph/ksocket.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/tests/sys/netgraph/ksocket.c b/tests/sys/netgraph/ksocket.c
index e97b9b3f0691..d3ea5ca2876e 100644
--- a/tests/sys/netgraph/ksocket.c
+++ b/tests/sys/netgraph/ksocket.c
@@ -50,15 +50,17 @@ hellocheck(int wr, int rd)
ATF_TC_WITHOUT_HEAD(udp_connect);
ATF_TC_BODY(udp_connect, tc)
{
- struct sockaddr sa = {
- .sa_family = AF_INET,
+ struct sockaddr_in sin = {
+ .sin_family = AF_INET,
+ .sin_addr.s_addr = htonl(INADDR_LOOPBACK),
+ .sin_len = sizeof(sin),
};
- socklen_t slen = sizeof(sa);
+ socklen_t slen = sizeof(sin);
int ds, cs, us;
ATF_REQUIRE((us = socket(PF_INET, SOCK_DGRAM, 0)) > 0);
- ATF_REQUIRE(bind(us, &sa, sizeof(sa)) == 0);
- ATF_REQUIRE(getsockname(us, &sa, &slen) == 0);
+ ATF_REQUIRE(bind(us, (struct sockaddr *)&sin, sizeof(sin)) == 0);
+ ATF_REQUIRE(getsockname(us, (struct sockaddr *)&sin, &slen) == 0);
struct ngm_mkpeer mkp = {
.type = NG_KSOCKET_NODE_TYPE,
@@ -69,7 +71,7 @@ ATF_TC_BODY(udp_connect, tc)
ATF_REQUIRE(NgSendMsg(cs, ".", NGM_GENERIC_COOKIE, NGM_MKPEER, &mkp,
sizeof(mkp)) >= 0);
ATF_REQUIRE(NgSendMsg(cs, ".:" OURHOOK, NGM_KSOCKET_COOKIE,
- NGM_KSOCKET_CONNECT, &sa, sizeof(sa)) >= 0);
+ NGM_KSOCKET_CONNECT, &sin, sizeof(sin)) >= 0);
hellocheck(ds, us);
}
@@ -79,6 +81,7 @@ ATF_TC_BODY(udp_bind, tc)
{
struct sockaddr_in sin = {
.sin_family = AF_INET,
+ .sin_addr.s_addr = htonl(INADDR_LOOPBACK),
.sin_len = sizeof(sin),
};
struct ng_mesg *rep;