summaryrefslogtreecommitdiffstats
path: root/source/libsmb/cliconnect.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/libsmb/cliconnect.c')
-rw-r--r--source/libsmb/cliconnect.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c
index 62acccdfb77..ebadafd5f05 100644
--- a/source/libsmb/cliconnect.c
+++ b/source/libsmb/cliconnect.c
@@ -188,7 +188,14 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, char *user,
int passlen;
char *p;
- passlen = clistr_push(cli, pword, pass, sizeof(pword), STR_TERMINATE|STR_ASCII);
+ int push_flags = STR_TERMINATE;
+
+ if (capabilities & CAP_UNICODE)
+ push_flags |= STR_UNICODE;
+ else
+ push_flags |= STR_ASCII;
+
+ passlen = clistr_push(cli, pword, pass, sizeof(pword), push_flags);
set_message(cli->outbuf,13,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
@@ -202,7 +209,7 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, char *user,
SSVAL(cli->outbuf,smb_vwv8,0);
SIVAL(cli->outbuf,smb_vwv11,capabilities);
p = smb_buf(cli->outbuf);
- p += clistr_push(cli, p, pword, -1, STR_TERMINATE); /* password */
+ p += clistr_push(cli, p, pass, -1, push_flags); /* password */
SSVAL(cli->outbuf,smb_vwv7,PTR_DIFF(p, smb_buf(cli->outbuf)));
p += clistr_push(cli, p, user, -1, STR_TERMINATE); /* username */
p += clistr_push(cli, p, workgroup, -1, STR_TERMINATE); /* workgroup */