From 37eaee03e0e48ec5e7b5a4704cfa93e8ab95f78f Mon Sep 17 00:00:00 2001 From: Jeremy Allison <jra@samba.org> Date: Wed, 26 Aug 2020 13:35:22 -0700 Subject: [PATCH] s3: libsmb: Make get_pdc_ip() use internal_resolve_name_talloc(). Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Noel Power <npower@samba.org> --- source3/libsmb/namequery.c | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index ec3c8e3df8a..375a78c0592 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -3712,22 +3712,32 @@ bool find_master_ip(const char *group, struct sockaddr_storage *master_ss) bool get_pdc_ip(const char *domain, struct sockaddr_storage *pss) { struct ip_service *ip_list = NULL; - int count = 0; + size_t count = 0; NTSTATUS status = NT_STATUS_DOMAIN_CONTROLLER_NOT_FOUND; static const char *ads_order[] = { "ads", NULL }; /* Look up #1B name */ if (lp_security() == SEC_ADS) { - status = internal_resolve_name(domain, 0x1b, NULL, &ip_list, - &count, ads_order); + status = internal_resolve_name_talloc(talloc_tos(), + domain, + 0x1b, + NULL, + &ip_list, + &count, + ads_order); } if (!NT_STATUS_IS_OK(status) || count == 0) { - status = internal_resolve_name(domain, 0x1b, NULL, &ip_list, - &count, - lp_name_resolve_order()); + TALLOC_FREE(ip_list); + status = internal_resolve_name_talloc(talloc_tos(), + domain, + 0x1b, + NULL, + &ip_list, + &count, + lp_name_resolve_order()); if (!NT_STATUS_IS_OK(status)) { - SAFE_FREE(ip_list); + TALLOC_FREE(ip_list); return false; } } @@ -3736,12 +3746,12 @@ bool get_pdc_ip(const char *domain, struct sockaddr_storage *pss) multi-homed PDC and not a mess up */ if ( count > 1 ) { - DEBUG(6,("get_pdc_ip: PDC has %d IP addresses!\n", count)); + DBG_INFO("PDC has %zu IP addresses!\n", count); sort_service_list(ip_list, count); } *pss = ip_list[0].ss; - SAFE_FREE(ip_list); + TALLOC_FREE(ip_list); return true; }