Commit 04d4726b authored by Stefan Metzmacher's avatar Stefan Metzmacher Committed by Ben Hutchings

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

commit 777f69b8 upstream.

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

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.2:
 - Adjust context, indentation
 - Keep using cERROR()]
Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
parent 9c818d99
...@@ -686,26 +686,32 @@ CIFS_SessSetup(unsigned int xid, struct cifs_ses *ses, ...@@ -686,26 +686,32 @@ CIFS_SessSetup(unsigned int xid, struct cifs_ses *ses,
#endif #endif
} else if (type == NTLM) { } else if (type == NTLM) {
pSMB->req_no_secext.Capabilities = cpu_to_le32(capabilities); pSMB->req_no_secext.Capabilities = cpu_to_le32(capabilities);
pSMB->req_no_secext.CaseInsensitivePasswordLength = if (ses->user_name != NULL) {
cpu_to_le16(CIFS_AUTH_RESP_SIZE); pSMB->req_no_secext.CaseInsensitivePasswordLength =
pSMB->req_no_secext.CaseSensitivePasswordLength = cpu_to_le16(CIFS_AUTH_RESP_SIZE);
cpu_to_le16(CIFS_AUTH_RESP_SIZE); pSMB->req_no_secext.CaseSensitivePasswordLength =
cpu_to_le16(CIFS_AUTH_RESP_SIZE);
/* calculate ntlm response and session key */
rc = setup_ntlm_response(ses, nls_cp);
if (rc) {
cERROR(1, "Error %d during NTLM authentication",
rc);
goto ssetup_exit;
}
/* calculate ntlm response and session key */ /* copy ntlm response */
rc = setup_ntlm_response(ses, nls_cp); memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE,
if (rc) { CIFS_AUTH_RESP_SIZE);
cERROR(1, "Error %d during NTLM authentication", rc); bcc_ptr += CIFS_AUTH_RESP_SIZE;
goto ssetup_exit; memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE,
CIFS_AUTH_RESP_SIZE);
bcc_ptr += CIFS_AUTH_RESP_SIZE;
} else {
pSMB->req_no_secext.CaseInsensitivePasswordLength = 0;
pSMB->req_no_secext.CaseSensitivePasswordLength = 0;
} }
/* copy ntlm response */
memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE,
CIFS_AUTH_RESP_SIZE);
bcc_ptr += CIFS_AUTH_RESP_SIZE;
memcpy(bcc_ptr, ses->auth_key.response + CIFS_SESS_KEY_SIZE,
CIFS_AUTH_RESP_SIZE);
bcc_ptr += CIFS_AUTH_RESP_SIZE;
if (ses->capabilities & CAP_UNICODE) { if (ses->capabilities & CAP_UNICODE) {
/* unicode strings must be word aligned */ /* unicode strings must be word aligned */
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