From: Jeremy Allison Date: Mon, 24 Aug 2020 18:26:23 +0000 (-0700) Subject: s3: libsmb: Cleanup - make name_query_send() use samba_sockaddr internally. X-Git-Tag: talloc-2.3.2~728 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0ef885c02d0450eb5c0bb44616ae6d10fc12d1dd;p=thirdparty%2Fsamba.git s3: libsmb: Cleanup - make name_query_send() use samba_sockaddr internally. Signed-off-by: Jeremy Allison Reviewed-by: David Mulder --- diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index 238af4800c9..c5d848218d0 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -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,