mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-25 23:53:15 -04:00
ksmbd: reject empty-attribute synchronize-only create
smb2.create.gentest checks each desired access bit independently and expects an open that requests only SYNCHRONIZE with CreateDisposition OPEN_IF and FileAttributes 0 to fail with STATUS_ACCESS_DENIED. Rejecting all SYNCHRONIZE-only opens is too broad: SYNCHRONIZE does not imply read, write, or delete data access, and smb2.sharemode.sharemode-access expects a SYNCHRONIZE-only open to succeed when it does not conflict with the existing share mode. Limit the rejection to the gentest create shape: SYNCHRONIZE-only access, OPEN_IF disposition, and no file attributes. Other synchronize-only opens are handled by the normal permission and share-mode checks. Signed-off-by: Namjae Jeon <linkinjeon@kernel.org> Signed-off-by: Steve French <stfrench@microsoft.com>
This commit is contained in:
committed by
Steve French
parent
19043971c9
commit
4687da7b28
@@ -3332,6 +3332,13 @@ int smb2_open(struct ksmbd_work *work)
|
||||
goto err_out2;
|
||||
}
|
||||
|
||||
if (req->DesiredAccess == FILE_SYNCHRONIZE_LE &&
|
||||
req->CreateDisposition == FILE_OPEN_IF_LE &&
|
||||
!req->FileAttributes) {
|
||||
rc = -EACCES;
|
||||
goto err_out2;
|
||||
}
|
||||
|
||||
if (req->FileAttributes && !(req->FileAttributes & FILE_ATTRIBUTE_MASK_LE)) {
|
||||
pr_err("Invalid file attribute : 0x%x\n",
|
||||
le32_to_cpu(req->FileAttributes));
|
||||
|
||||
Reference in New Issue
Block a user