]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: libsmb: Cleanup - make name_query_send() use samba_sockaddr internally.
authorJeremy Allison <jra@samba.org>
Mon, 24 Aug 2020 18:26:23 +0000 (11:26 -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 238af4800c9a1283c237c3cdc300ccec121953ed..c5d848218d0bc0bf21c1698e197b5f1855ee845a 100644 (file)
@@ -1258,7 +1258,7 @@ static bool prioritize_ipv4_list(struct ip_service *iplist, int count)
 
 struct name_query_state {
        struct samba_sockaddr my_addr;
-       struct sockaddr_storage addr;
+       struct samba_sockaddr addr;
        bool bcast;
        bool bcast_star_query;
 
@@ -1286,7 +1286,7 @@ struct tevent_req *name_query_send(TALLOC_CTX *mem_ctx,
        struct name_query_state *state;
        struct packet_struct p;
        struct nmb_packet *nmb = &p.packet.nmb;
-       struct sockaddr_in *in_addr;
+       bool ok;
 
        req = tevent_req_create(mem_ctx, &state, struct name_query_state);
        if (req == NULL) {
@@ -1307,9 +1307,13 @@ struct tevent_req *name_query_send(TALLOC_CTX *mem_ctx,
                return tevent_req_post(req, ev);
        }
 
-       state->addr = *addr;
-       in_addr = (struct sockaddr_in *)(void *)&state->addr;
-       in_addr->sin_port = htons(NMB_PORT);
+       ok = sockaddr_storage_to_samba_sockaddr(&state->addr, addr);
+       if (!ok) {
+               /* Node status must be IPv4 */
+               tevent_req_nterror(req, NT_STATUS_INVALID_ADDRESS);
+               return tevent_req_post(req, ev);
+       }
+       state->addr.u.in.sin_port = htons(NMB_PORT);
 
        set_socket_addr_v4(&state->my_addr);
 
@@ -1354,7 +1358,7 @@ struct tevent_req *name_query_send(TALLOC_CTX *mem_ctx,
        subreq = nb_trans_send(state,
                                ev,
                                &state->my_addr.u.ss,
-                               &state->addr,
+                               &state->addr.u.ss,
                                bcast,
                                state->buf,
                                state->buflen,