]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: libsmb: Cleanup - Remove two more sockaddr casts inside remove_duplicate_addrs2().
authorJeremy Allison <jra@samba.org>
Mon, 24 Aug 2020 18:54:26 +0000 (11:54 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 25 Aug 2020 16:21:32 +0000 (16:21 +0000)
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: David Mulder <dmulder@samba.org>
source3/libsmb/namequery.c

index 464a9b7b4a4302df866bb795d7890f0ceca0eafb..7975e226f72384c16396d27bfe30d5a0c12f1e7a 100644 (file)
@@ -1203,13 +1203,28 @@ int remove_duplicate_addrs2(struct ip_service *iplist, int count )
 
        /* One loop to set duplicates to a zero addr. */
        for ( i=0; i<count; i++ ) {
-               if ( is_zero_addr(&iplist[i].ss)) {
+               bool ok;
+               struct samba_sockaddr sa_i = {0};
+
+               ok = sockaddr_storage_to_samba_sockaddr(&sa_i, &iplist[i].ss);
+               if (!ok) {
+                       continue;
+               }
+
+               if (is_zero_addr(&sa_i.u.ss)) {
                        continue;
                }
 
                for ( j=i+1; j<count; j++ ) {
-                       if (sockaddr_equal((struct sockaddr *)(void *)&iplist[i].ss,
-                                          (struct sockaddr *)(void *)&iplist[j].ss) &&
+                       struct samba_sockaddr sa_j = {0};
+
+                       ok = sockaddr_storage_to_samba_sockaddr(&sa_j,
+                                                       &iplist[j].ss);
+                       if (!ok) {
+                               continue;
+                       }
+
+                       if (sockaddr_equal(&sa_i.u.sa, &sa_j.u.sa) &&
                                        iplist[i].port == iplist[j].port) {
                                zero_sockaddr(&iplist[j].ss);
                        }