]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
ksmbd: set NTLMSSP_NEGOTIATE_SEAL flag to challenge blob
authorNamjae Jeon <linkinjeon@kernel.org>
Mon, 18 Dec 2023 15:33:17 +0000 (00:33 +0900)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 23 Dec 2023 09:41:53 +0000 (10:41 +0100)
[ Upstream commit 5bedae90b369ca1a7660b9af39591ed19009b495 ]

If NTLMSSP_NEGOTIATE_SEAL flags is set in negotiate blob from client,
Set NTLMSSP_NEGOTIATE_SEAL flag to challenge blob.

Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
fs/ksmbd/auth.c
fs/ksmbd/smb2pdu.c
fs/ksmbd/smb2pdu.h

index 45f0e9a75e639454c3c380e921814f539f64f75d..bad4c3af95406744e2a92f583ed086a7ca1691ef 100644 (file)
@@ -428,6 +428,9 @@ ksmbd_build_ntlmssp_challenge_blob(struct challenge_message *chgblob,
                                   NTLMSSP_NEGOTIATE_56);
        }
 
+       if (cflags & NTLMSSP_NEGOTIATE_SEAL && smb3_encryption_negotiated(conn))
+               flags |= NTLMSSP_NEGOTIATE_SEAL;
+
        if (cflags & NTLMSSP_NEGOTIATE_ALWAYS_SIGN)
                flags |= NTLMSSP_NEGOTIATE_ALWAYS_SIGN;
 
index 7558f091233e7cd05c33a1a7838a85372bcc8828..0c261209233cdfa1739d72c311f86a10aec2e0cc 100644 (file)
@@ -956,7 +956,7 @@ static void decode_encrypt_ctxt(struct ksmbd_conn *conn,
  *
  * Return:     true if connection should be encrypted, else false
  */
-static bool smb3_encryption_negotiated(struct ksmbd_conn *conn)
+bool smb3_encryption_negotiated(struct ksmbd_conn *conn)
 {
        if (!conn->ops->generate_encryptionkey)
                return false;
index fe391b8afa9c989a83a78150559e5fbcbc856620..e20d4d707f1bd1cb1ebfabc88bf18117437534c7 100644 (file)
@@ -1672,6 +1672,7 @@ int smb3_decrypt_req(struct ksmbd_work *work);
 int smb3_encrypt_resp(struct ksmbd_work *work);
 bool smb3_11_final_sess_setup_resp(struct ksmbd_work *work);
 int smb2_set_rsp_credits(struct ksmbd_work *work);
+bool smb3_encryption_negotiated(struct ksmbd_conn *conn);
 
 /* smb2 misc functions */
 int ksmbd_smb2_check_message(struct ksmbd_work *work);