summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2003-12-12 22:54:43 +0000
committerJeremy Allison <jra@samba.org>2003-12-12 22:54:43 +0000
commitc4f1b6cf3af731750bf0dfe2311514576197e4e2 (patch)
treeff5fcf11c805007351d5fa996ad2acf37acaccc4
parentb3ed8328e11d01f71d8e3bcc92c47d11c130c22e (diff)
downloadsamba-c4f1b6cf3af731750bf0dfe2311514576197e4e2.tar.gz
samba-c4f1b6cf3af731750bf0dfe2311514576197e4e2.tar.xz
samba-c4f1b6cf3af731750bf0dfe2311514576197e4e2.zip
Fix for bug #815. Make plaintext unicode passwords work with NT4.x
Jeremy. (This used to be commit ba0b5b8c9be9bfeba5e0b3f930ca0463d1e78c9c)
-rw-r--r--source3/smbd/sesssetup.c16
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);
}