Commit a80a486d authored by Namjae Jeon's avatar Namjae Jeon Committed by Steve French
Browse files

ksmbd: fix slab-out-of-bounds in smb_strndup_from_utf16()



If ->NameOffset of smb2_create_req is smaller than Buffer offset of
smb2_create_req, slab-out-of-bounds read can happen from smb2_open.
This patch set the minimum value of the name offset to the buffer offset
to validate name length of smb2_create_req().

Cc: stable@vger.kernel.org
Reported-by: default avatarXuanzhe Yu <yuxuanzhe@outlook.com>
Signed-off-by: default avatarNamjae Jeon <linkinjeon@kernel.org>
Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
parent e758fa69
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -107,7 +107,10 @@ static int smb2_get_data_area_len(unsigned int *off, unsigned int *len,
	case SMB2_CREATE:
	{
		unsigned short int name_off =
			le16_to_cpu(((struct smb2_create_req *)hdr)->NameOffset);
			max_t(unsigned short int,
			      le16_to_cpu(((struct smb2_create_req *)hdr)->NameOffset),
			      offsetof(struct smb2_create_req, Buffer));

		unsigned short int name_len =
			le16_to_cpu(((struct smb2_create_req *)hdr)->NameLength);