]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
cifs: validate DFS referral string offsets
authorGuangshuo Li <lgs201920130244@gmail.com>
Wed, 8 Jul 2026 11:27:10 +0000 (19:27 +0800)
committerSteve French <stfrench@microsoft.com>
Wed, 8 Jul 2026 15:10:38 +0000 (10:10 -0500)
commit027a84ac6b50c12ef767c15abfc58aa865820e9e
treeccdad5b2e33bae15fd98d3a981261ac9d0f76dcb
parent6d07e4f7144b636b112fbe177d32e1cf85e2558e
cifs: validate DFS referral string offsets

parse_dfs_referrals() validates that the response header and referral
array fit in the received buffer, but each referral also contains string
offsets supplied by the server.

Those offsets are used to compute the DfsPath and NetworkAddress string
pointers without checking whether they still point inside the response
buffer. A malformed referral can therefore make the computed pointer
exceed the end of the buffer. The resulting negative max_len is then
passed to cifs_strndup_from_utf16(), and the non-Unicode path forwards it
to kstrndup() as a size_t, allowing strnlen() to read out of bounds.

Validate each string offset before deriving the string pointer.

Fixes: 4ecce920e13a ("CIFS: move DFS response parsing out of SMB1 code")
Signed-off-by: Guangshuo Li <lgs201920130244@gmail.com>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/misc.c