cifs: Fix signing failure when server mandates signing for NTLMSSP
When using NTLMSSP authentication mechanism, if server mandates signing, keep the flags in type 3 messages of the NTLMSSP exchange same as in type 1 messages (i.e. keep the indicated capabilities same). Some of the servers such as Samba, expect the flags such as Negotiate_Key_Exchange in type 3 message of NTLMSSP exchange as well. Some servers like Windows do not. https://bugzilla.samba.org/show_bug.cgi?id=8212 Signed-off-by: Shirish Pargaonkar <shirishpargaonkar@gmail> Acked-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
620917de59
commit
62411ab2fe
|
@ -428,8 +428,7 @@ static void build_ntlmssp_negotiate_blob(unsigned char *pbuffer,
|
||||||
(SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED)) {
|
(SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED)) {
|
||||||
flags |= NTLMSSP_NEGOTIATE_SIGN;
|
flags |= NTLMSSP_NEGOTIATE_SIGN;
|
||||||
if (!ses->server->session_estab)
|
if (!ses->server->session_estab)
|
||||||
flags |= NTLMSSP_NEGOTIATE_KEY_XCH |
|
flags |= NTLMSSP_NEGOTIATE_KEY_XCH;
|
||||||
NTLMSSP_NEGOTIATE_EXTENDED_SEC;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sec_blob->NegotiateFlags = cpu_to_le32(flags);
|
sec_blob->NegotiateFlags = cpu_to_le32(flags);
|
||||||
|
@ -465,10 +464,11 @@ static int build_ntlmssp_auth_blob(unsigned char *pbuffer,
|
||||||
NTLMSSP_NEGOTIATE_128 | NTLMSSP_NEGOTIATE_UNICODE |
|
NTLMSSP_NEGOTIATE_128 | NTLMSSP_NEGOTIATE_UNICODE |
|
||||||
NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_EXTENDED_SEC;
|
NTLMSSP_NEGOTIATE_NTLM | NTLMSSP_NEGOTIATE_EXTENDED_SEC;
|
||||||
if (ses->server->sec_mode &
|
if (ses->server->sec_mode &
|
||||||
(SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED))
|
(SECMODE_SIGN_REQUIRED | SECMODE_SIGN_ENABLED)) {
|
||||||
flags |= NTLMSSP_NEGOTIATE_SIGN;
|
flags |= NTLMSSP_NEGOTIATE_SIGN;
|
||||||
if (ses->server->sec_mode & SECMODE_SIGN_REQUIRED)
|
if (!ses->server->session_estab)
|
||||||
flags |= NTLMSSP_NEGOTIATE_ALWAYS_SIGN;
|
flags |= NTLMSSP_NEGOTIATE_KEY_XCH;
|
||||||
|
}
|
||||||
|
|
||||||
tmp = pbuffer + sizeof(AUTHENTICATE_MESSAGE);
|
tmp = pbuffer + sizeof(AUTHENTICATE_MESSAGE);
|
||||||
sec_blob->NegotiateFlags = cpu_to_le32(flags);
|
sec_blob->NegotiateFlags = cpu_to_le32(flags);
|
||||||
|
|
Loading…
Reference in New Issue