Skip to content

Commit 8735c7c

Browse files
committed
Merge tag '6.7rc7-smb3-srv-fix' of git://git.samba.org/ksmbd
Pull ksmbd server fix from Steve French: - address possible slab out of bounds in parsing of open requests * tag '6.7rc7-smb3-srv-fix' of git://git.samba.org/ksmbd: ksmbd: fix slab-out-of-bounds in smb_strndup_from_utf16()
2 parents 505e701 + d10c778 commit 8735c7c

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

fs/smb/server/smb2misc.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,25 @@ static int smb2_get_data_area_len(unsigned int *off, unsigned int *len,
106106
break;
107107
case SMB2_CREATE:
108108
{
109+
unsigned short int name_off =
110+
le16_to_cpu(((struct smb2_create_req *)hdr)->NameOffset);
111+
unsigned short int name_len =
112+
le16_to_cpu(((struct smb2_create_req *)hdr)->NameLength);
113+
109114
if (((struct smb2_create_req *)hdr)->CreateContextsLength) {
110115
*off = le32_to_cpu(((struct smb2_create_req *)
111116
hdr)->CreateContextsOffset);
112117
*len = le32_to_cpu(((struct smb2_create_req *)
113118
hdr)->CreateContextsLength);
114-
break;
119+
if (!name_len)
120+
break;
121+
122+
if (name_off + name_len < (u64)*off + *len)
123+
break;
115124
}
116125

117-
*off = le16_to_cpu(((struct smb2_create_req *)hdr)->NameOffset);
118-
*len = le16_to_cpu(((struct smb2_create_req *)hdr)->NameLength);
126+
*off = name_off;
127+
*len = name_len;
119128
break;
120129
}
121130
case SMB2_QUERY_INFO:

0 commit comments

Comments
 (0)