From c29188f501936f986470821064032d6681622ca5 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Tue, 15 Dec 2015 21:43:50 +0100 Subject: [PATCH] libsmb: Convert resolve_hosts to sockaddr_storage Eventually I want to get rid of struct ip_service. Signed-off-by: Volker Lendecke Reviewed-by: Uri Simchoni --- source3/libsmb/namequery.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index 7eb5dff6cf5..38c6648f02b 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -2327,7 +2327,8 @@ static NTSTATUS resolve_lmhosts(const char *name, int name_type, *********************************************************/ static NTSTATUS resolve_hosts(const char *name, int name_type, - struct ip_service **return_iplist, + TALLOC_CTX *mem_ctx, + struct sockaddr_storage **return_iplist, int *return_count) { /* @@ -2388,16 +2389,15 @@ static NTSTATUS resolve_hosts(const char *name, int name_type, *return_count += 1; - *return_iplist = SMB_REALLOC_ARRAY(*return_iplist, - struct ip_service, - *return_count); + *return_iplist = talloc_realloc( + mem_ctx, *return_iplist, struct sockaddr_storage, + *return_count); if (!*return_iplist) { DEBUG(3,("resolve_hosts: malloc fail !\n")); freeaddrinfo(ailist); return NT_STATUS_NO_MEMORY; } - (*return_iplist)[i].ss = ss; - (*return_iplist)[i].port = PORT_NONE; + (*return_iplist)[i] = ss; i++; } if (ailist) { @@ -2715,9 +2715,16 @@ NTSTATUS internal_resolve_name(const char *name, tok = resolve_order[i]; if((strequal(tok, "host") || strequal(tok, "hosts"))) { - status = resolve_hosts(name, name_type, return_iplist, + struct sockaddr_storage *ss_list; + status = resolve_hosts(name, name_type, + talloc_tos(), &ss_list, return_count); if (NT_STATUS_IS_OK(status)) { + if (!convert_ss2service(return_iplist, + ss_list, + return_count)) { + status = NT_STATUS_NO_MEMORY; + } goto done; } } else if(strequal( tok, "kdc")) { -- 2.34.1