]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
smbd: allow setting ARCHIVE bit in POSIX context with "store dos attributes"
authorRalph Boehme <slow@samba.org>
Tue, 31 Oct 2023 11:25:38 +0000 (12:25 +0100)
committerJeremy Allison <jra@samba.org>
Sun, 5 Nov 2023 18:34:38 +0000 (18:34 +0000)
Cf https://lists.samba.org/archive/samba-technical/2023-October/138504.html

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/smbd/dosmode.c
source3/torture/test_posix.c

index b388b5dc5813c0bc684bba5fea53ff273e66b120..c0fc468cdfb61c7bc0425191c7c008e5656a17c8 100644 (file)
@@ -925,8 +925,10 @@ int file_set_dosmode(connection_struct *conn,
                return -1;
        }
 
-       if (fsp->fsp_flags & FSP_POSIX_FLAGS_OPEN) {
-               return;
+       if (smb_fname->fsp->posix_flags & FSP_POSIX_FLAGS_OPEN &&
+           !lp_store_dos_attributes(SNUM(conn)))
+       {
+               return 0;
        }
 
        unixmode = smb_fname->st.st_ex_mode;
index d0289abb834ed48cba0ca8974c5053ddeaf1079f..28198451166514ddcbd1000ad82f7863a79027a7 100644 (file)
@@ -143,7 +143,7 @@ bool run_posix_ls_wildcard_test(int dummy)
                        .name = symlnk_in_share,
                        .target = symlnk_dst_in_share,
                        .expected = symlnk_in_share,
-                       .attr_win = FILE_ATTRIBUTE_NORMAL,
+                       .attr_win = FILE_ATTRIBUTE_ARCHIVE,
                        .attr_lin = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_outside_share,
@@ -319,7 +319,7 @@ bool run_posix_ls_single_test(int dummy)
                        .name = symlnk_in_share,
                        .target = symlnk_dst_in_share,
                        .expected = symlnk_in_share,
-                       .attr_win = FILE_ATTRIBUTE_NORMAL,
+                       .attr_win = FILE_ATTRIBUTE_ARCHIVE,
                        .attr_lin = FILE_ATTRIBUTE_NORMAL,
                }, {
                        .name = symlnk_outside_share,