]> www.infradead.org Git - users/hch/misc.git/commit
cifs: Fix struct FILE_ALL_INFO
authorPali Rohár <pali@kernel.org>
Sun, 29 Dec 2024 14:31:05 +0000 (15:31 +0100)
committerSteve French <stfrench@microsoft.com>
Fri, 31 Jan 2025 18:51:44 +0000 (12:51 -0600)
commit021840c1426c012a812f8b8d9413f3cf9d3e0b9b
tree0057aa34adedff8eced235356e7c79003cae253c
parent071b8a67a8b2e611e837dfa342a883183a19c190
cifs: Fix struct FILE_ALL_INFO

struct FILE_ALL_INFO for level 263 (0x107) used by QPathInfo does not have
any IndexNumber, AccessFlags, IndexNumber1, CurrentByteOffset, Mode or
AlignmentRequirement members. So remove all of them.

Also adjust code in move_cifs_info_to_smb2() function which converts struct
FILE_ALL_INFO to struct smb2_file_all_info.

Fixed content of struct FILE_ALL_INFO was verified that is correct against:
* [MS-CIFS] section 2.2.8.3.10 SMB_QUERY_FILE_ALL_INFO
* Samba server implementation of trans2 query file/path for level 263
* Packet structure tests against Windows SMB servers

This change fixes CIFSSMBQFileInfo() and CIFSSMBQPathInfo() functions which
directly copy received FILE_ALL_INFO network buffers into kernel structures
of FILE_ALL_INFO type.

struct FILE_ALL_INFO is the response structure returned by the SMB server.
So the incorrect definition of this structure can lead to returning bogus
information in stat() call.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/smb/client/cifsglob.h
fs/smb/client/cifspdu.h