summaryrefslogtreecommitdiffstats
path: root/source/libsmb/cliconnect.c
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2003-05-21 16:12:07 +0000
committerGerald Carter <jerry@samba.org>2003-05-21 16:12:07 +0000
commite7d635af80c844f17ff9f34c26c1e9c978951ce1 (patch)
treecb6f105d2124ee2c25c1a366958dc9256d7e8853 /source/libsmb/cliconnect.c
parentc42318a068f26a6ca74eccd1a82d0965ef9d436d (diff)
downloadsamba-e7d635af80c844f17ff9f34c26c1e9c978951ce1.tar.gz
samba-e7d635af80c844f17ff9f34c26c1e9c978951ce1.tar.xz
samba-e7d635af80c844f17ff9f34c26c1e9c978951ce1.zip
fix for UNICODE plaintext passwords (bug #59) and fix smbclient to send the unicode plain text password if negoitated
Diffstat (limited to 'source/libsmb/cliconnect.c')
-rw-r--r--source/libsmb/cliconnect.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c
index 154a7cae58d..8ebac7bae7b 100644
--- a/source/libsmb/cliconnect.c
+++ b/source/libsmb/cliconnect.c
@@ -188,6 +188,9 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, const char *user,
{
uint32 capabilities = cli_session_setup_capabilities(cli);
char *p;
+ fstring lanman;
+
+ snprintf( lanman, sizeof(lanman), "Samba %s", VERSION );
set_message(cli->outbuf,13,0,True);
SCVAL(cli->outbuf,smb_com,SMBsesssetupX);
@@ -201,12 +204,22 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, const char *user,
SSVAL(cli->outbuf,smb_vwv8,0);
SIVAL(cli->outbuf,smb_vwv11,capabilities);
p = smb_buf(cli->outbuf);
- p += clistr_push(cli, p, pass, -1, STR_TERMINATE); /* password */
- SSVAL(cli->outbuf,smb_vwv7,PTR_DIFF(p, smb_buf(cli->outbuf)));
+
+ /* check wether to send the ASCII or UNICODE version of the password */
+
+ if ( (capabilities & CAP_UNICODE) == 0 ) {
+ p += clistr_push(cli, p, pass, -1, STR_TERMINATE); /* password */
+ SSVAL(cli->outbuf,smb_vwv7,PTR_DIFF(p, smb_buf(cli->outbuf)));
+ }
+ else {
+ p += clistr_push(cli, p, pass, -1, STR_UNICODE|STR_TERMINATE); /* unicode password */
+ SSVAL(cli->outbuf,smb_vwv8,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 */
p += clistr_push(cli, p, "Unix", -1, STR_TERMINATE);
- p += clistr_push(cli, p, "Samba", -1, STR_TERMINATE);
+ p += clistr_push(cli, p, lanman, -1, STR_TERMINATE);
cli_setup_bcc(cli, p);
cli_send_smb(cli);