summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2002-02-13 16:36:24 +0000
committerGerald Carter <jerry@samba.org>2002-02-13 16:36:24 +0000
commit67501864d765f17ba3195f728e495ecbab968eea (patch)
treed5ce66c8e087a9495e94b5d4c2072d6ac3c810d2
parent045b231ca5e38e6d0633ce44b2e9749681e24c58 (diff)
downloadsamba-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.c4
-rw-r--r--source/libsmb/clierror.c6
-rw-r--r--source/libsmb/domain_client_validate.c3
-rw-r--r--source/rpc_client/cli_spoolss_notify.c4
-rw-r--r--source/rpc_client/cli_trust.c5
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;
}