diff options
-rw-r--r-- | source3/winbindd/winbindd_cm.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/source3/winbindd/winbindd_cm.c b/source3/winbindd/winbindd_cm.c index ae51c268bd..860fabbf72 100644 --- a/source3/winbindd/winbindd_cm.c +++ b/source3/winbindd/winbindd_cm.c @@ -1257,6 +1257,8 @@ static bool find_new_dc(TALLOC_CTX *mem_ctx, int i, fd_index; + *fd = -1; + again: if (!get_dcs(mem_ctx, domain, &dcs, &num_dcs) || (num_dcs == 0)) return False; @@ -1318,6 +1320,19 @@ static bool find_new_dc(TALLOC_CTX *mem_ctx, /* We can not continue without the DC's name */ winbind_add_failed_connection_entry(domain, dcs[fd_index].name, NT_STATUS_UNSUCCESSFUL); + + /* Throw away all arrays as we're doing this again. */ + TALLOC_FREE(dcs); + num_dcs = 0; + + TALLOC_FREE(dcnames); + num_dcnames = 0; + + TALLOC_FREE(addrs); + num_addrs = 0; + + *fd = -1; + goto again; } |