diff options
| author | Diego Oliva <diego@bynar.io> | 2026-09-02 11:42:06 +0100 |
|---|---|---|
| committer | Paulo Alcantara <pc@manguebit.org> | 2026-09-02 15:28:39 -0300 |
| commit | e6142a8bfc230c7263eb8b0475249c958ce49367 (patch) | |
| tree | a622198c40ff6cb12be27be88ae8cbc9fffcf035 /scripts/basic | |
| parent | 89a312991dc6e638a36adc43ccb91dbc25504c04 (diff) | |
| download | linux-e6142a8bfc230c7263eb8b0475249c958ce49367.tar.gz linux-e6142a8bfc230c7263eb8b0475249c958ce49367.zip | |
smb: client: reject short READ responses in CIFSSMBRead()
CIFSSMBRead() reads DataLengthHigh, DataLength and DataOffset out of
the READ_RSP returned by the server without first checking that a
whole READ_RSP was actually received. The length of the response is
recorded in rsp_iov.iov_len, but nothing constrains it to be at least
read_rsp_size before those fields are dereferenced.
A malicious or compromised SMB1 server can return a response shorter
than the READ_RSP header, so that parsing the header itself reads past
the end of the receive buffer. SMB1 is not negotiated by default;
reaching this code requires an explicit vers=1.0 mount.
Reject the response unless it is at least read_rsp_size bytes long.
Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2")
Suggested-by: Paulo Alcantara <pc@manguebit.org>
Cc: stable@vger.kernel.org # 6.19.x
Assisted-by: Bynario AI
Signed-off-by: Diego Oliva <diego@bynar.io>
Reviewed-by: David Howells <dhowells@redhat.com>
Signed-off-by: Paulo Alcantara <pc@manguebit.org>
Diffstat (limited to 'scripts/basic')
0 files changed, 0 insertions, 0 deletions
