Skip to content

Commit bab703e

Browse files
nszeteiSteve French
authored andcommitted
ksmbd: add bounds check for create lease context
Add missing bounds check for create lease context. Cc: stable@vger.kernel.org Reported-by: Norbert Szetei <norbert@doyensec.com> Tested-by: Norbert Szetei <norbert@doyensec.com> Signed-off-by: Norbert Szetei <norbert@doyensec.com> Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
1 parent 542027e commit bab703e

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

fs/smb/server/oplock.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1505,6 +1505,10 @@ struct lease_ctx_info *parse_lease_state(void *open_req)
15051505
if (sizeof(struct lease_context_v2) == le32_to_cpu(cc->DataLength)) {
15061506
struct create_lease_v2 *lc = (struct create_lease_v2 *)cc;
15071507

1508+
if (le16_to_cpu(cc->DataOffset) + le32_to_cpu(cc->DataLength) <
1509+
sizeof(struct create_lease_v2) - 4)
1510+
return NULL;
1511+
15081512
memcpy(lreq->lease_key, lc->lcontext.LeaseKey, SMB2_LEASE_KEY_SIZE);
15091513
lreq->req_state = lc->lcontext.LeaseState;
15101514
lreq->flags = lc->lcontext.LeaseFlags;
@@ -1517,6 +1521,10 @@ struct lease_ctx_info *parse_lease_state(void *open_req)
15171521
} else {
15181522
struct create_lease *lc = (struct create_lease *)cc;
15191523

1524+
if (le16_to_cpu(cc->DataOffset) + le32_to_cpu(cc->DataLength) <
1525+
sizeof(struct create_lease))
1526+
return NULL;
1527+
15201528
memcpy(lreq->lease_key, lc->lcontext.LeaseKey, SMB2_LEASE_KEY_SIZE);
15211529
lreq->req_state = lc->lcontext.LeaseState;
15221530
lreq->flags = lc->lcontext.LeaseFlags;

0 commit comments

Comments
 (0)