[PATCH] Small cleanups struct sockaddr -> struct sockaddr_storage

Jeremy Allison jra at samba.org
Fri May 27 18:48:21 UTC 2016


So after noticing the cleanup in Volker's patch,
I did:

git grep 'struct sockaddr ' | grep -v 'struct sockaddr \*'

and here are the 2 cleanups I found that were needed.

Please review and push if you agree. The smbldap one,
is that worth a bug report ?

Comments welcome,

Jeremy.
-------------- next part --------------
From 8421d481afcaddb5b74c6af0f0a94eeff8787579 Mon Sep 17 00:00:00 2001
From: Jeremy Allison <jra at samba.org>
Date: Fri, 27 May 2016 11:42:58 -0700
Subject: [PATCH 1/2] s3: lib: ldap: Use struct sockaddr_storage to cope with
 IPv6.

Signed-off-by: Jeremy Allison <jra at samba.org>
---
 source3/lib/smbldap.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/source3/lib/smbldap.c b/source3/lib/smbldap.c
index 5a876e0..e9cc48b 100644
--- a/source3/lib/smbldap.c
+++ b/source3/lib/smbldap.c
@@ -1040,7 +1040,7 @@ static int smbldap_open(struct smbldap_state *ldap_state)
 #ifdef HAVE_UNIXSOCKET
 		struct sockaddr_un addr;
 #else
-		struct sockaddr addr;
+		struct sockaddr_storage addr;
 #endif
 		socklen_t len = sizeof(addr);
 		int sd;
-- 
2.8.0.rc3.226.g39d4020


From e4d644d14e621b0473aaca39fc1d8c35f778f36f Mon Sep 17 00:00:00 2001
From: Jeremy Allison <jra at samba.org>
Date: Fri, 27 May 2016 11:43:31 -0700
Subject: [PATCH 2/2] lib: tevent: Use struct sockaddr_storage to cope with
 IPv6.

Signed-off-by: Jeremy Allison <jra at samba.org>
---
 lib/tevent/echo_server.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/tevent/echo_server.c b/lib/tevent/echo_server.c
index 102f7b4..6e7f181 100644
--- a/lib/tevent/echo_server.c
+++ b/lib/tevent/echo_server.c
@@ -66,7 +66,7 @@ struct accept_state {
 	struct tevent_fd *fde;
 	int listen_sock;
 	socklen_t addrlen;
-	struct sockaddr addr;
+	struct sockaddr_storage addr;
 	int sock;
 };
 
@@ -111,7 +111,9 @@ static void accept_handler(struct tevent_context *ev, struct tevent_fd *fde,
 	}
 	state->addrlen = sizeof(state->addr);
 
-	ret = accept(state->listen_sock, &state->addr, &state->addrlen);
+	ret = accept(state->listen_sock,
+			(struct sockaddr *)&state->addr,
+			&state->addrlen);
 	if (ret == -1) {
 		tevent_req_error(req, errno);
 		return;
@@ -133,7 +135,7 @@ static int accept_recv(struct tevent_req *req, struct sockaddr *paddr,
 		return -1;
 	}
 	if (paddr != NULL) {
-		*paddr = state->addr;
+		memcpy(paddr, &state->addr, state->addrlen);
 	}
 	if (paddrlen != NULL) {
 		*paddrlen = state->addrlen;
-- 
2.8.0.rc3.226.g39d4020



More information about the samba-technical mailing list