summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/reply.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index fdcf4870e8..c34e7f8b06 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -5905,6 +5905,21 @@ NTSTATUS rename_internals_fsp(connection_struct *conn,
"%s -> %s\n", smb_fname_str_dbg(fsp->fsp_name),
smb_fname_str_dbg(smb_fname_dst)));
+ if (lp_map_archive(SNUM(conn)) ||
+ lp_store_dos_attributes(SNUM(conn))) {
+ /* We must set the archive bit on the newly
+ renamed file. */
+ if (SMB_VFS_STAT(conn, smb_fname_dst) == 0) {
+ uint32_t old_dosmode = dos_mode(conn,
+ smb_fname_dst);
+ file_set_dosmode(conn,
+ smb_fname_dst,
+ old_dosmode | FILE_ATTRIBUTE_ARCHIVE,
+ NULL,
+ true);
+ }
+ }
+
notify_rename(conn, fsp->is_directory, fsp->fsp_name,
smb_fname_dst);