Commit d1c77424 authored by Stefan Metzmacher's avatar Stefan Metzmacher Committed by Ben Hutchings

fs/cifs: correctly to anonymous authentication for the NTLM(v2) authentication

commit 1a967d6c upstream.

Only server which map unknown users to guest will allow
access using a non-null NTLMv2_Response.

For Samba it's the "map to guest = bad user" option.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=11913Signed-off-by: default avatarStefan Metzmacher <metze@samba.org>
Signed-off-by: default avatarSteve French <smfrench@gmail.com>
[bwh: Backported to 3.16:adjust context, indentation]
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent 2432f27f
...@@ -703,22 +703,26 @@ CIFS_SessSetup(const unsigned int xid, struct cifs_ses *ses, ...@@ -703,22 +703,26 @@ CIFS_SessSetup(const unsigned int xid, struct cifs_ses *ses,
/* LM2 password would be here if we supported it */ /* LM2 password would be here if we supported it */
pSMB->req_no_secext.CaseInsensitivePasswordLength = 0; pSMB->req_no_secext.CaseInsensitivePasswordLength = 0;
/* calculate nlmv2 response and session key */ if (ses->user_name != NULL) {
rc = setup_ntlmv2_rsp(ses, nls_cp); /* calculate nlmv2 response and session key */
if (rc) { rc = setup_ntlmv2_rsp(ses, nls_cp);
cifs_dbg(VFS, "Error %d during NTLMv2 authentication\n", if (rc) {
rc); cifs_dbg(VFS, "Error %d during NTLMv2 authentication\n", rc);
goto ssetup_exit; goto ssetup_exit;
} }
memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE,
ses->auth_key.len - CIFS_SESS_KEY_SIZE);
bcc_ptr += ses->auth_key.len - CIFS_SESS_KEY_SIZE;
/* set case sensitive password length after tilen may get memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE,
* assigned, tilen is 0 otherwise. ses->auth_key.len - CIFS_SESS_KEY_SIZE);
*/ bcc_ptr += ses->auth_key.len - CIFS_SESS_KEY_SIZE;
pSMB->req_no_secext.CaseSensitivePasswordLength =
cpu_to_le16(ses->auth_key.len - CIFS_SESS_KEY_SIZE); /* set case sensitive password length after tilen may get
* assigned, tilen is 0 otherwise.
*/
pSMB->req_no_secext.CaseSensitivePasswordLength =
cpu_to_le16(ses->auth_key.len - CIFS_SESS_KEY_SIZE);
} else {
pSMB->req_no_secext.CaseSensitivePasswordLength = 0;
}
if (ses->capabilities & CAP_UNICODE) { if (ses->capabilities & CAP_UNICODE) {
if (iov[0].iov_len % 2) { if (iov[0].iov_len % 2) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment