diff options
Diffstat (limited to 'source3/winbindd/winbindd_cm.c')
-rw-r--r-- | source3/winbindd/winbindd_cm.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index 312d30371f..ae51c268bd 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -1167,9 +1167,20 @@ static bool get_dcs(TALLOC_CTX *mem_ctx, struct winbindd_domain *domain, sitename = sitename_fetch(domain->alt_name); if (sitename) { + NTSTATUS status; /* Do the site-specific AD dns lookup first. */ - get_sorted_dc_list(domain->alt_name, sitename, &ip_list, &iplist_size, True); + status = get_sorted_dc_list(domain->alt_name, + sitename, &ip_list, + &iplist_size, True); + if (!NT_STATUS_IS_OK(status)) { + /* + * Work around a crappy about-to-be-replaced + * get_sorted_dc_list error handling :-) + */ + SAFE_FREE(ip_list); + iplist_size = 0; + } for ( i=0; i<iplist_size; i++ ) { char addr[INET6_ADDRSTRLEN]; @@ -1202,6 +1213,8 @@ static bool get_dcs(TALLOC_CTX *mem_ctx, struct winbindd_domain *domain, dcs, num_dcs); } + SAFE_FREE(ip_list); + iplist_size = 0; } /* try standard netbios queries if no ADS */ |