smbd: set fsp->fsp_flags.can_write to false for access to previous-versions
authorRalph Boehme <slow@samba.org>
Wed, 20 Dec 2023 17:03:22 +0000 (18:03 +0100)
committerJule Anger <janger@samba.org>
Tue, 16 Jan 2024 09:09:15 +0000 (09:09 +0000)
BUG: https://bugzilla.samba.org/show_bug.cgi?id=13688

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Stefan Metzmacher <metze@samba.org>
(cherry picked from commit ee3035218df4cfd68b6aab6825c78f2b85234c6c)

source3/smbd/files.c
source3/smbd/open.c

index d3f6b629264a6fa063bfd8e5db1d0af40335f16e..32388f133f378800d1015b8525acbf1a3b11d75d 100644 (file)
@@ -1977,6 +1977,9 @@ NTSTATUS dup_file_fsp(
        to->fsp_flags.can_write =
                CAN_WRITE(from->conn) &&
                ((access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) != 0);
+       if (from->fsp_name->twrp != 0) {
+               to->fsp_flags.can_write = false;
+       }
        to->fsp_flags.modified = from->fsp_flags.modified;
        to->fsp_flags.is_directory = from->fsp_flags.is_directory;
        to->fsp_flags.aio_write_behind = from->fsp_flags.aio_write_behind;
index c848243c9b584e33ccf642785fb221e9ab970b74..e804d096907776a68c015c905328be7b5d0ee298 100644 (file)
@@ -1678,6 +1678,9 @@ static NTSTATUS open_file(struct smb_request *req,
        fsp->fsp_flags.can_write =
                CAN_WRITE(conn) &&
                ((access_mask & (FILE_WRITE_DATA | FILE_APPEND_DATA)) != 0);
+       if (fsp->fsp_name->twrp != 0) {
+               fsp->fsp_flags.can_write = false;
+       }
        fsp->print_file = NULL;
        fsp->fsp_flags.modified = false;
        fsp->sent_oplock_break = NO_BREAK_SENT;