diff options
author | Andrew Bartlett <abartlet@samba.org> | 2002-03-19 06:36:37 +0000 |
---|---|---|
committer | Andrew Bartlett <abartlet@samba.org> | 2002-03-19 06:36:37 +0000 |
commit | 462402fc098a8d727d92dee8114a3b06d96e3c93 (patch) | |
tree | 986d82e4ca390131d5df4948aa11715b6887dacd | |
parent | bf555a158a99becb3a6ac0c3b2b9502f01cd2bc2 (diff) | |
download | samba-462402fc098a8d727d92dee8114a3b06d96e3c93.tar.gz samba-462402fc098a8d727d92dee8114a3b06d96e3c93.tar.bz2 samba-462402fc098a8d727d92dee8114a3b06d96e3c93.zip |
Fix a double-free bug in wbinfo -t's call in winbindd.
I forgot to clean this up when netlogon move across to the connection cache
arrangement.
Also add some smb_panics to the connection_ok() code to try to catch this kind
of thing better in future.
Andrew Bartlett
(This used to be commit f4f23fad6099143ec26550afc67655390070ceb8)
-rw-r--r-- | source3/nsswitch/winbindd_cm.c | 6 | ||||
-rw-r--r-- | source3/nsswitch/winbindd_misc.c | 9 |
2 files changed, 8 insertions, 7 deletions
diff --git a/source3/nsswitch/winbindd_cm.c b/source3/nsswitch/winbindd_cm.c index dfae06ff00..03a8e3cdd1 100644 --- a/source3/nsswitch/winbindd_cm.c +++ b/source3/nsswitch/winbindd_cm.c @@ -379,14 +379,16 @@ static BOOL connection_ok(struct winbindd_cm_conn *conn) } if (!conn->cli) { - DEBUG(3, ("Connection to %s for domain %s (pipe %s) has NULL conn->cli!\n", + DEBUG(0, ("Connection to %s for domain %s (pipe %s) has NULL conn->cli!\n", conn->controller, conn->domain, conn->pipe_name)); + smb_panic("connection_ok: conn->cli was null!"); return False; } if (!conn->cli->initialised) { - DEBUG(3, ("Connection to %s for domain %s (pipe %s) was never initialised!\n", + DEBUG(0, ("Connection to %s for domain %s (pipe %s) was never initialised!\n", conn->controller, conn->domain, conn->pipe_name)); + smb_panic("connection_ok: conn->cli->initialised is False!"); return False; } diff --git a/source3/nsswitch/winbindd_misc.c b/source3/nsswitch/winbindd_misc.c index 81adcc373e..5678bdaa5a 100644 --- a/source3/nsswitch/winbindd_misc.c +++ b/source3/nsswitch/winbindd_misc.c @@ -60,6 +60,7 @@ enum winbindd_result winbindd_check_machine_acct(struct winbindd_cli_state *stat /* This call does a cli_nt_setup_creds() which implicitly checks the trust account password. */ + /* Don't shut this down - it belongs to the connection cache code */ result = cm_get_netlogon_cli(lp_workgroup(), trust_passwd, &cli); if (!NT_STATUS_IS_OK(result)) { @@ -67,12 +68,10 @@ enum winbindd_result winbindd_check_machine_acct(struct winbindd_cli_state *stat goto done; } - cli_shutdown(cli); - /* There is a race condition between fetching the trust account - password and joining the domain so it's possible that the trust - account password has been changed on us. We are returned - NT_STATUS_ACCESS_DENIED if this happens. */ + password and the periodic machine password change. So it's + possible that the trust account password has been changed on us. + We are returned NT_STATUS_ACCESS_DENIED if this happens. */ #define MAX_RETRIES 8 |