[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Thu Aug 27 08:17:02 UTC 2020


The branch, master has been updated
       via  f8b7ee024ba s3: libsmb: Remove one more ugly sockaddr cast in resolve_name_list() by converting to samba_sockaddr.
       via  42d01987d3d s3: libsmb: Inside get_dc_list() move one more sockaddr_storage -> samba_sockaddr.
      from  fbe58531a20 third_party: Update resolv_wrapper to version 1.1.7

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f8b7ee024ba6ecabe75180047222335b6a970dda
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:41:27 2020 -0700

    s3: libsmb: Remove one more ugly sockaddr cast in resolve_name_list() by converting to samba_sockaddr.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Thu Aug 27 08:16:37 UTC 2020 on sn-devel-184

commit 42d01987d3d5e90360e0ad63da08cf0994983f68
Author: Jeremy Allison <jra at samba.org>
Date:   Wed Aug 26 12:35:42 2020 -0700

    s3: libsmb: Inside get_dc_list() move one more sockaddr_storage -> samba_sockaddr.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source3/libsmb/namequery.c | 50 ++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 42 insertions(+), 8 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c
index af6efc63569..57ef58ec12e 100644
--- a/source3/libsmb/namequery.c
+++ b/source3/libsmb/namequery.c
@@ -3521,8 +3521,17 @@ NTSTATUS resolve_name_list(TALLOC_CTX *ctx,
 
 	/* only return valid addresses for TCP connections */
 	for (i=0, num_entries = 0; i<count; i++) {
-		if (!is_zero_addr(&ss_list[i].ss) &&
-		    !is_broadcast_addr((struct sockaddr *)(void *)&ss_list[i].ss)) {
+		struct samba_sockaddr sa = {0};
+		bool ok;
+
+		ok = sockaddr_storage_to_samba_sockaddr(&sa,
+							&ss_list[i].ss);
+		if (!ok) {
+			status = NT_STATUS_INVALID_ADDRESS;
+			goto done;
+		}
+		if (!is_zero_addr(&sa.u.ss) &&
+		    !is_broadcast_addr(&sa.u.sa)) {
 			num_entries++;
 		}
 	}
@@ -3540,8 +3549,17 @@ NTSTATUS resolve_name_list(TALLOC_CTX *ctx,
 	}
 
 	for (i=0, num_entries = 0; i<count; i++) {
-		if (!is_zero_addr(&ss_list[i].ss) &&
-		    !is_broadcast_addr((struct sockaddr *)(void *)&ss_list[i].ss)) {
+		struct samba_sockaddr sa = {0};
+		bool ok;
+
+		ok = sockaddr_storage_to_samba_sockaddr(&sa,
+							&ss_list[i].ss);
+		if (!ok) {
+			status = NT_STATUS_INVALID_ADDRESS;
+			goto done;
+		}
+		if (!is_zero_addr(&sa.u.ss) &&
+		    !is_broadcast_addr(&sa.u.sa)) {
 			(*return_ss_arr)[num_entries++] = ss_list[i].ss;
 		}
 	}
@@ -3777,7 +3795,7 @@ static NTSTATUS get_dc_list(const char *domain,
 
 	while ((local_count<num_addresses) &&
 			next_token_talloc(ctx, &p, &name, LIST_SEP)) {
-		struct sockaddr_storage name_ss;
+		struct samba_sockaddr name_sa = {0};
 
 		/* copy any addresses from the auto lookup */
 
@@ -3828,11 +3846,27 @@ static NTSTATUS get_dc_list(const char *domain,
 
 		/* explicit lookup; resolve_name() will
 		 * handle names & IP addresses */
-		if (resolve_name( name, &name_ss, 0x20, true )) {
+		if (resolve_name(name, &name_sa.u.ss, 0x20, true)) {
 			char addr[INET6_ADDRSTRLEN];
+			bool ok;
+
+			/*
+			 * Ensure we set sa_socklen correctly.
+			 * Doesn't matter now, but eventually we
+			 * will remove ip_service and return samba_sockaddr
+			 * arrays directly.
+			 */
+			ok = sockaddr_storage_to_samba_sockaddr(
+					&name_sa,
+					&name_sa.u.ss);
+			if (!ok) {
+				status = NT_STATUS_INVALID_ADDRESS;
+				goto out;
+			}
+
 			print_sockaddr(addr,
 					sizeof(addr),
-					&name_ss);
+					&name_sa.u.ss);
 
 			/* Check for and don't copy any known bad DC IP's. */
 			if( !NT_STATUS_IS_OK(check_negative_conn_cache(domain,
@@ -3843,7 +3877,7 @@ static NTSTATUS get_dc_list(const char *domain,
 				continue;
 			}
 
-			return_iplist[local_count].ss = name_ss;
+			return_iplist[local_count].ss = name_sa.u.ss;
 			return_iplist[local_count].port = port;
 			local_count++;
 			*ordered = true;


-- 
Samba Shared Repository



More information about the samba-cvs mailing list