fs/cifs: correctly to anonymous authentication for the NTLM(v2) authentication
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=11913 Signed-off-by: Stefan Metzmacher <metze@samba.org> CC: Stable <stable@vger.kernel.org> Signed-off-by: Steve French <smfrench@gmail.com>
This commit is contained in:
parent
777f69b8d2
commit
1a967d6c9b
@ -895,23 +895,27 @@ sess_auth_ntlmv2(struct sess_data *sess_data)
|
|||||||
/* 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, sess_data->nls_cp);
|
/* calculate nlmv2 response and session key */
|
||||||
if (rc) {
|
rc = setup_ntlmv2_rsp(ses, sess_data->nls_cp);
|
||||||
cifs_dbg(VFS, "Error %d during NTLMv2 authentication\n", rc);
|
if (rc) {
|
||||||
goto out;
|
cifs_dbg(VFS, "Error %d during NTLMv2 authentication\n", rc);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
* 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;
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
|
||||||
* assigned, tilen is 0 otherwise.
|
|
||||||
*/
|
|
||||||
pSMB->req_no_secext.CaseSensitivePasswordLength =
|
|
||||||
cpu_to_le16(ses->auth_key.len - CIFS_SESS_KEY_SIZE);
|
|
||||||
|
|
||||||
if (ses->capabilities & CAP_UNICODE) {
|
if (ses->capabilities & CAP_UNICODE) {
|
||||||
if (sess_data->iov[0].iov_len % 2) {
|
if (sess_data->iov[0].iov_len % 2) {
|
||||||
*bcc_ptr = 0;
|
*bcc_ptr = 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user