diff options
author | Jeremy Allison <jra@samba.org> | 2003-12-12 22:54:43 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2003-12-12 22:54:43 +0000 |
commit | c4f1b6cf3af731750bf0dfe2311514576197e4e2 (patch) | |
tree | ff5fcf11c805007351d5fa996ad2acf37acaccc4 /source3/smbd | |
parent | b3ed8328e11d01f71d8e3bcc92c47d11c130c22e (diff) | |
download | samba-c4f1b6cf3af731750bf0dfe2311514576197e4e2.tar.gz samba-c4f1b6cf3af731750bf0dfe2311514576197e4e2.tar.bz2 samba-c4f1b6cf3af731750bf0dfe2311514576197e4e2.zip |
Fix for bug #815. Make plaintext unicode passwords work with NT4.x
Jeremy.
(This used to be commit ba0b5b8c9be9bfeba5e0b3f930ca0463d1e78c9c)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/sesssetup.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/source3/smbd/sesssetup.c b/source3/smbd/sesssetup.c index da48c81fc1..e9cfa47d0c 100644 --- a/source3/smbd/sesssetup.c +++ b/source3/smbd/sesssetup.c @@ -689,11 +689,17 @@ int reply_sesssetup_and_X(connection_struct *conn, char *inbuf,char *outbuf, nt_resp = data_blob(p+passlen1, passlen2); } else { pstring pass; - BOOL unic; - unic=SVAL(inbuf, smb_flg2) & FLAGS2_UNICODE_STRINGS; - srvstr_pull(inbuf, pass, smb_buf(inbuf), - sizeof(pass), unic ? passlen2 : passlen1, - STR_TERMINATE); + BOOL unic=SVAL(inbuf, smb_flg2) & FLAGS2_UNICODE_STRINGS; + + if ((ra_type == RA_WINNT) && (passlen2 == 0) && unic && passlen1) { + /* NT4.0 stuffs up plaintext unicode password lengths... */ + srvstr_pull(inbuf, pass, smb_buf(inbuf) + 1, + sizeof(pass), passlen1, STR_TERMINATE); + } else { + srvstr_pull(inbuf, pass, smb_buf(inbuf), + sizeof(pass), unic ? passlen2 : passlen1, + STR_TERMINATE); + } plaintext_password = data_blob(pass, strlen(pass)+1); } |