summaryrefslogtreecommitdiff
path: root/source3/libsmb/clientgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libsmb/clientgen.c')
-rw-r--r--source3/libsmb/clientgen.c36
1 files changed, 22 insertions, 14 deletions
diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c
index f3bd08895d..5a0363185f 100644
--- a/source3/libsmb/clientgen.c
+++ b/source3/libsmb/clientgen.c
@@ -2675,8 +2675,18 @@ initialise a client structure
****************************************************************************/
void cli_init_creds(struct cli_state *cli, const struct user_credentials *usr)
{
- copy_user_creds(&cli->usr, usr);
- cli->ntlmssp_cli_flgs = usr->ntlmssp_flags;
+ if (usr != NULL)
+ {
+ copy_user_creds(&cli->usr, usr);
+ cli->ntlmssp_cli_flgs = usr->ntlmssp_flags;
+ }
+ else
+ {
+ cli->usr.domain[0] = 0;
+ cli->usr.user_name[0] = 0;
+ pwd_set_nullpwd(&cli->usr.pwd);
+ cli->ntlmssp_cli_flgs = 0;
+ }
}
/****************************************************************************
@@ -2715,7 +2725,10 @@ struct cli_state *cli_initialise(struct cli_state *cli)
}
cli->initialised = 1;
- cli->capabilities = CAP_DFS;
+ cli->capabilities = CAP_DFS | CAP_NT_SMBS | CAP_STATUS32;
+ cli->use_ntlmv2 = Auto;
+
+ cli_init_creds(cli, NULL);
return cli;
}
@@ -2984,6 +2997,7 @@ BOOL cli_establish_connection(struct cli_state *cli,
if (IS_BITS_SET_ALL(cli->capabilities, CAP_EXTENDED_SECURITY))
{
/* common to both session setups */
+ uint32 ntlmssp_flgs;
char pwd_buf[128];
int buf_len;
char *p;
@@ -3024,9 +3038,7 @@ BOOL cli_establish_connection(struct cli_state *cli,
p = skip_string(p, 1);
CVAL(p, 0) = 0x1;
p += 4;
- if (cli->ntlmssp_cli_flgs == 0)
- {
- cli->ntlmssp_cli_flgs =
+ ntlmssp_flgs =
NTLMSSP_NEGOTIATE_UNICODE |
NTLMSSP_NEGOTIATE_OEM |
NTLMSSP_NEGOTIATE_SIGN |
@@ -3036,11 +3048,7 @@ BOOL cli_establish_connection(struct cli_state *cli,
NTLMSSP_NEGOTIATE_ALWAYS_SIGN |
NTLMSSP_NEGOTIATE_00001000 |
NTLMSSP_NEGOTIATE_00002000;
-#if 0
- cli->ntlmssp_cli_flgs = 0x80008207;
-#endif
- }
- SIVAL(p, 0, cli->ntlmssp_cli_flgs);
+ SIVAL(p, 0, ntlmssp_flgs);
p += 4;
p += 16; /* skip some NULL space */
CVAL(p, 0) = 0; p++; /* alignment */
@@ -3072,12 +3080,12 @@ BOOL cli_establish_connection(struct cli_state *cli,
}
p = smb_buf(cli->inbuf) + 0x2f;
- cli->ntlmssp_cli_flgs = IVAL(p, 0); /* 0x80808a05; */
+ ntlmssp_flgs = IVAL(p, 0); /* 0x80808a05; */
p += 4;
memcpy(cli->cryptkey, p, 8);
#ifdef DEBUG_PASSWORD
DEBUG(100,("cli_session_setup_x: ntlmssp %8x\n",
- cli->ntlmssp_cli_flgs));
+ ntlmssp_flgs));
DEBUG(100,("cli_session_setup_x: crypt key\n"));
dump_data(100, cli->cryptkey, 8);
@@ -3098,7 +3106,7 @@ BOOL cli_establish_connection(struct cli_state *cli,
create_ntlmssp_resp(&cli->usr.pwd, cli->usr.domain,
cli->usr.user_name, cli->calling.name,
- cli->ntlmssp_cli_flgs,
+ ntlmssp_flgs,
&auth_resp);
prs_link(NULL, &auth_resp, NULL);