diff options
author | Gerald Carter <jerry@samba.org> | 2002-02-13 16:36:24 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2002-02-13 16:36:24 +0000 |
commit | 67501864d765f17ba3195f728e495ecbab968eea (patch) | |
tree | d5ce66c8e087a9495e94b5d4c2072d6ac3c810d2 | |
parent | 045b231ca5e38e6d0633ce44b2e9749681e24c58 (diff) | |
download | samba-67501864d765f17ba3195f728e495ecbab968eea.tar.gz samba-67501864d765f17ba3195f728e495ecbab968eea.tar.xz samba-67501864d765f17ba3195f728e495ecbab968eea.zip |
* fix smbd crash when netbios session request fails
from spoolss_connect_to_client().
* Added check against running cli_errstr() against an
uninitialised cli_state struct
-rw-r--r-- | source/libsmb/cli_lsarpc.c | 4 | ||||
-rw-r--r-- | source/libsmb/clierror.c | 6 | ||||
-rw-r--r-- | source/libsmb/domain_client_validate.c | 3 | ||||
-rw-r--r-- | source/rpc_client/cli_spoolss_notify.c | 4 | ||||
-rw-r--r-- | source/rpc_client/cli_trust.c | 5 |
5 files changed, 13 insertions, 9 deletions
diff --git a/source/libsmb/cli_lsarpc.c b/source/libsmb/cli_lsarpc.c index 992c5c0439c..c7bcc1490ba 100644 --- a/source/libsmb/cli_lsarpc.c +++ b/source/libsmb/cli_lsarpc.c @@ -839,8 +839,8 @@ machine %s. Error was : %s.\n", remote_machine, cli_errstr(&cli) )); } if (!attempt_netbios_session_request(&cli, global_myname, remote_machine, &cli.dest_ip)) { - DEBUG(0,("fetch_domain_sid: machine %s rejected the NetBIOS \ -session request. Error was %s\n", remote_machine, cli_errstr(&cli) )); + DEBUG(0,("fetch_domain_sid: machine %s rejected the NetBIOS session request.\n", + remote_machine)); goto done; } diff --git a/source/libsmb/clierror.c b/source/libsmb/clierror.c index 6957c2cec29..33c359fc2d3 100644 --- a/source/libsmb/clierror.c +++ b/source/libsmb/clierror.c @@ -75,6 +75,12 @@ char *cli_errstr(struct cli_state *cli) uint32 flgs2 = SVAL(cli->inbuf,smb_flg2), errnum; uint8 errclass; int i; + + if (!cli->initialised) { + fstrcpy(cli_error_message, "[Programmer's error] cli_errstr called on unitialized cli_stat struct!\n"); + return cli_error_message; + } + /* Case #1: RAP error */ if (cli->rap_error) { diff --git a/source/libsmb/domain_client_validate.c b/source/libsmb/domain_client_validate.c index 04ce90895ae..b76f462dc9e 100644 --- a/source/libsmb/domain_client_validate.c +++ b/source/libsmb/domain_client_validate.c @@ -86,8 +86,7 @@ machine %s. Error was : %s.\n", remote_machine, cli_errstr(pcli) )); } if (!attempt_netbios_session_request(pcli, global_myname, remote_machine, &dest_ip)) { - DEBUG(0,("connect_to_password_server: machine %s rejected the NetBIOS \ -session request. Error was : %s.\n", remote_machine, cli_errstr(pcli) )); + DEBUG(0,("connect_to_password_server: machine %s rejected the NetBIOS session request.\n", remote_machine)); return False; } diff --git a/source/rpc_client/cli_spoolss_notify.c b/source/rpc_client/cli_spoolss_notify.c index a96fd8e0dde..7b5ba84dbb6 100644 --- a/source/rpc_client/cli_spoolss_notify.c +++ b/source/rpc_client/cli_spoolss_notify.c @@ -70,8 +70,8 @@ BOOL spoolss_connect_to_client( struct cli_state *cli, char *remote_machine) } if (!attempt_netbios_session_request(cli, global_myname, remote_machine, &cli->dest_ip)) { - DEBUG(0,("connect_to_client: machine %s rejected the NetBIOS session request. Error was %s\n", remote_machine, cli_errstr(cli) )); - cli_shutdown(cli); + DEBUG(0,("connect_to_client: machine %s rejected the NetBIOS session request.\n", + remote_machine)); return False; } diff --git a/source/rpc_client/cli_trust.c b/source/rpc_client/cli_trust.c index c910e2f334a..21eb878deb3 100644 --- a/source/rpc_client/cli_trust.c +++ b/source/rpc_client/cli_trust.c @@ -74,9 +74,8 @@ machine %s. Error was : %s.\n", remote_machine, cli_errstr(&cli) )); } if (!attempt_netbios_session_request(&cli, global_myname, remote_machine, &cli.dest_ip)) { - DEBUG(0,("modify_trust_password: machine %s rejected the NetBIOS \ -session request. Error was %s\n", remote_machine, cli_errstr(&cli) )); - cli_shutdown(&cli); + DEBUG(0,("modify_trust_password: machine %s rejected the NetBIOS session request.\n", + remote_machine )); return False; } |