mirror of
https://github.com/torvalds/linux.git
synced 2024-11-28 23:21:31 +00:00
smb311 server preauth integrity negotiate context parsing fix
-----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEE6fsu8pdIjtWE/DpLiiy9cAdyT1EFAmQ7bhwACgkQiiy9cAdy T1Fk3Av+NcTPMF6ZIhxXN4IwpsvE0KdXm+BB/+dCw82zi2mVAyZowLSFkM3TKqRh 6GOpSnKu2Vp7TCSNdN0ZtnOcC9q8H/SpFmLojBeoiyUr87tjngd7ktTkUd32FEaf jfOqS0+NSZPmhB7eKXJ75jOISMvga0x3t1KHbO7vTm12I5b6VY3r1hxiit0RP0fg 7QKWNwSR8erQMkg8+F+n5q9kAIi88ymrPTx8991JdENqzCjJ0dNMLX7ULwD8SiWa d9PnEFGyQeLoVF/FRQ4hYNRv67Os3xjEFdJtpZKlZ9CKfzgwA1kOYQQRfGb64bBP wQ0Syga8OudYMq6X1jMGsw0qaGxwC32jIA03M05oQ75A8SaXyb1jauHdwNFJqjmH JhSZ6qI77TduYK0v92Oa+Y76miW/RoI5sS8i0GrayjwN8NsBsrHH7JuLS/LSFpc/ vlv0fPqBTRpFP7Yv+JJr8lgY6a8aeAF5R4fYPeyGbOpxXm71Af95ZX5Q3JYNzdz4 ZuEpSVVn =LnMO -----END PGP SIGNATURE----- Merge tag '6.3-rc6-ksmbd-server-fix' of git://git.samba.org/ksmbd Pull ksmbd server fix from Steve French: "smb311 server preauth integrity negotiate context parsing fix (check for out of bounds access)" * tag '6.3-rc6-ksmbd-server-fix' of git://git.samba.org/ksmbd: ksmbd: avoid out of bounds access in decode_preauth_ctxt()
This commit is contained in:
commit
6586c4d480
@ -876,17 +876,21 @@ static void assemble_neg_contexts(struct ksmbd_conn *conn,
|
||||
}
|
||||
|
||||
static __le32 decode_preauth_ctxt(struct ksmbd_conn *conn,
|
||||
struct smb2_preauth_neg_context *pneg_ctxt)
|
||||
struct smb2_preauth_neg_context *pneg_ctxt,
|
||||
int len_of_ctxts)
|
||||
{
|
||||
__le32 err = STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP;
|
||||
/*
|
||||
* sizeof(smb2_preauth_neg_context) assumes SMB311_SALT_SIZE Salt,
|
||||
* which may not be present. Only check for used HashAlgorithms[1].
|
||||
*/
|
||||
if (len_of_ctxts < MIN_PREAUTH_CTXT_DATA_LEN)
|
||||
return STATUS_INVALID_PARAMETER;
|
||||
|
||||
if (pneg_ctxt->HashAlgorithms == SMB2_PREAUTH_INTEGRITY_SHA512) {
|
||||
conn->preauth_info->Preauth_HashId =
|
||||
SMB2_PREAUTH_INTEGRITY_SHA512;
|
||||
err = STATUS_SUCCESS;
|
||||
}
|
||||
if (pneg_ctxt->HashAlgorithms != SMB2_PREAUTH_INTEGRITY_SHA512)
|
||||
return STATUS_NO_PREAUTH_INTEGRITY_HASH_OVERLAP;
|
||||
|
||||
return err;
|
||||
conn->preauth_info->Preauth_HashId = SMB2_PREAUTH_INTEGRITY_SHA512;
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
static void decode_encrypt_ctxt(struct ksmbd_conn *conn,
|
||||
@ -1014,7 +1018,8 @@ static __le32 deassemble_neg_contexts(struct ksmbd_conn *conn,
|
||||
break;
|
||||
|
||||
status = decode_preauth_ctxt(conn,
|
||||
(struct smb2_preauth_neg_context *)pctx);
|
||||
(struct smb2_preauth_neg_context *)pctx,
|
||||
len_of_ctxts);
|
||||
if (status != STATUS_SUCCESS)
|
||||
break;
|
||||
} else if (pctx->ContextType == SMB2_ENCRYPTION_CAPABILITIES) {
|
||||
|
Loading…
Reference in New Issue
Block a user