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;
 }