]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: libsmb: Cleanup - remove an ugly sockaddr_in cast inside resolve_wins_send().
authorJeremy Allison <jra@samba.org>
Mon, 24 Aug 2020 22:35:32 +0000 (15:35 -0700)
committerJeremy Allison <jra@samba.org>
Tue, 25 Aug 2020 17:43:17 +0000 (17:43 +0000)
Use samba_sockaddr for its intended purpose.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: David Mulder <dmulder@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Tue Aug 25 17:43:17 UTC 2020 on sn-devel-184

source3/libsmb/namequery.c

index 568337eb170d281fc55b3f9534afcf164d55cee8..af6efc635697f9108a61958256c72f3a6d7ba1a3 100644 (file)
@@ -2178,8 +2178,10 @@ struct tevent_req *resolve_wins_send(TALLOC_CTX *mem_ctx,
        struct resolve_wins_state *state;
        char **wins_tags = NULL;
        struct sockaddr_storage src_ss;
+       struct samba_sockaddr src_sa = {0};
        struct in_addr src_ip;
        int i, num_wins_tags;
+       bool ok;
 
        req = tevent_req_create(mem_ctx, &state,
                                struct resolve_wins_state);
@@ -2200,9 +2202,15 @@ struct tevent_req *resolve_wins_send(TALLOC_CTX *mem_ctx,
                zero_sockaddr(&src_ss);
        }
 
-       if (src_ss.ss_family != AF_INET) {
+       ok = sockaddr_storage_to_samba_sockaddr(&src_sa, &src_ss);
+       if (!ok) {
+               tevent_req_nterror(req, NT_STATUS_INVALID_PARAMETER);
+               goto fail;
+       }
+
+       if (src_sa.u.ss.ss_family != AF_INET) {
                char addr[INET6_ADDRSTRLEN];
-               print_sockaddr(addr, sizeof(addr), &src_ss);
+               print_sockaddr(addr, sizeof(addr), &src_sa.u.ss);
                DEBUG(3,("resolve_wins: cannot receive WINS replies "
                        "on IPv6 address %s\n",
                        addr));
@@ -2210,7 +2218,7 @@ struct tevent_req *resolve_wins_send(TALLOC_CTX *mem_ctx,
                goto fail;
        }
 
-       src_ip = ((const struct sockaddr_in *)(void *)&src_ss)->sin_addr;
+       src_ip = src_sa.u.in.sin_addr;
 
        wins_tags = wins_srv_tags();
        if (wins_tags == NULL) {