diff options
| author | Linus Torvalds <[email protected]> | 2023-12-21 05:09:47 +0000 |
|---|---|---|
| committer | Linus Torvalds <[email protected]> | 2023-12-21 05:09:47 +0000 |
| commit | eee7f5b48e20c585dc8069b3ab8abdcabd0afded (patch) | |
| tree | 64b04aaa8fc7892151f131ade276a478c07d9151 /fs/smb/client/connect.c | |
| parent | Merge tag 's390-6.7-4' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/... (diff) | |
| parent | cifs: do not let cifs_chan_update_iface deallocate channels (diff) | |
| download | kernel-eee7f5b48e20c585dc8069b3ab8abdcabd0afded.tar.gz kernel-eee7f5b48e20c585dc8069b3ab8abdcabd0afded.zip | |
Merge tag '6.7-rc6-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6
Pull smb client fixes from Steve French:
- two multichannel reconnect fixes, one fixing an important refcounting
problem that can lead to umount problems
- atime fix
- five fixes for various potential OOB accesses, including a CVE fix,
and two additional fixes for problems pointed out by Robert Morris's
fuzzing investigation
* tag '6.7-rc6-smb3-client-fixes' of git://git.samba.org/sfrench/cifs-2.6:
cifs: do not let cifs_chan_update_iface deallocate channels
cifs: fix a pending undercount of srv_count
fs: cifs: Fix atime update check
smb: client: fix potential OOB in smb2_dump_detail()
smb: client: fix potential OOB in cifs_dump_detail()
smb: client: fix OOB in smbCalcSize()
smb: client: fix OOB in SMB2_query_info_init()
smb: client: fix OOB in cifsd when receiving compounded resps
Diffstat (limited to 'fs/smb/client/connect.c')
| -rw-r--r-- | fs/smb/client/connect.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/fs/smb/client/connect.c b/fs/smb/client/connect.c index 9dc6dc2754c2..dd2a1fb65e71 100644 --- a/fs/smb/client/connect.c +++ b/fs/smb/client/connect.c @@ -1201,7 +1201,12 @@ next_pdu: server->total_read += length; if (server->ops->next_header) { - next_offset = server->ops->next_header(buf); + if (server->ops->next_header(server, buf, &next_offset)) { + cifs_dbg(VFS, "%s: malformed response (next_offset=%u)\n", + __func__, next_offset); + cifs_reconnect(server, true); + continue; + } if (next_offset) server->pdu_size = next_offset; } |
