diff options
| -rw-r--r-- | source3/libsmb/cliconnect.c | 11 | 
1 files changed, 9 insertions, 2 deletions
| diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c index 62acccdfb7..ebadafd5f0 100644 --- a/source3/libsmb/cliconnect.c +++ b/source3/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 */ | 
