diff options
author | Volker Lendecke <vl@samba.org> | 2008-06-05 10:38:58 +0200 |
---|---|---|
committer | Volker Lendecke <vl@samba.org> | 2008-06-05 10:56:18 +0200 |
commit | bde7cbf4a7f734b1f092825f52de618cfd563e1e (patch) | |
tree | b26eebce4347951a84ec095f337787960e6ce218 /source3/winbindd | |
parent | d261e16cfd4afc19db0c26cfb2b6389c9c174310 (diff) | |
download | samba-bde7cbf4a7f734b1f092825f52de618cfd563e1e.tar.gz samba-bde7cbf4a7f734b1f092825f52de618cfd563e1e.tar.bz2 samba-bde7cbf4a7f734b1f092825f52de618cfd563e1e.zip |
Fix a memleak caused by a crappy get_sorted_dc_list() API
(This used to be commit 2ea03a1e95a30e321e390bef9408a1215711de07)
Diffstat (limited to 'source3/winbindd')
-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 */ |