diff options
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/clientgen.c | 16 | ||||
-rw-r--r-- | source3/libsmb/clitrans.c | 4 |
2 files changed, 13 insertions, 7 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index 682e0d8b85..39fe91172d 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -245,6 +245,7 @@ void cli_setup_signing_state(struct cli_state *cli, int signing_state) struct cli_state *cli_initialise(struct cli_state *cli) { BOOL alloced_cli = False; + int i; /* Check the effective uid - make sure we are not setuid */ if (is_setuid_root()) { @@ -315,7 +316,9 @@ struct cli_state *cli_initialise(struct cli_state *cli) /* initialise signing */ cli_null_set_signing(cli); - cli->nt_pipe_fnum = 0; + for (i=0; i<PI_MAX_PIPES; i++) + cli->nt_pipe_fnum[i] = 0; + cli->saved_netlogon_pipe_fnum = 0; cli->initialised = 1; @@ -344,14 +347,17 @@ close the session void cli_nt_session_close(struct cli_state *cli) { + int i; + if (cli->ntlmssp_pipe_state) { ntlmssp_end(&cli->ntlmssp_pipe_state); } - if (cli->nt_pipe_fnum != 0) - cli_close(cli, cli->nt_pipe_fnum); - - cli->nt_pipe_fnum = 0; + for (i=0; i<PI_MAX_PIPES; i++) { + if (cli->nt_pipe_fnum[i] != 0) + cli_close(cli, cli->nt_pipe_fnum[i]); + cli->nt_pipe_fnum[i] = 0; + } cli->pipe_idx = -1; } diff --git a/source3/libsmb/clitrans.c b/source3/libsmb/clitrans.c index 761741a91b..3f1afa75d6 100644 --- a/source3/libsmb/clitrans.c +++ b/source3/libsmb/clitrans.c @@ -504,7 +504,7 @@ BOOL cli_receive_nt_trans(struct cli_state *cli, */ if (cli_is_dos_error(cli)) { cli_dos_error(cli, &eclass, &ecode); - if (cli->nt_pipe_fnum == 0 || !(eclass == ERRDOS && ecode == ERRmoredata)) { + if (cli->nt_pipe_fnum[cli->pipe_idx] == 0 || !(eclass == ERRDOS && ecode == ERRmoredata)) { cli_signing_trans_stop(cli); return(False); } @@ -638,7 +638,7 @@ BOOL cli_receive_nt_trans(struct cli_state *cli, } if (cli_is_dos_error(cli)) { cli_dos_error(cli, &eclass, &ecode); - if(cli->nt_pipe_fnum == 0 || !(eclass == ERRDOS && ecode == ERRmoredata)) { + if(cli->nt_pipe_fnum[cli->pipe_idx] == 0 || !(eclass == ERRDOS && ecode == ERRmoredata)) { cli_signing_trans_stop(cli); return(False); } |