diff options
author | Jeremy Allison <jra@samba.org> | 2010-09-22 12:26:13 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-09-22 12:26:13 -0700 |
commit | 314dc23ecfb5fc014f9c2ef70bd508eb837632b0 (patch) | |
tree | 75fcf4bd2238731ebd7efc6b3d3534b86760be9b /source3/smbd/fileio.c | |
parent | cf6e773e1a75b1d7d32dfa952d3bb743db6e1b7c (diff) | |
download | samba-314dc23ecfb5fc014f9c2ef70bd508eb837632b0.tar.gz samba-314dc23ecfb5fc014f9c2ef70bd508eb837632b0.tar.bz2 samba-314dc23ecfb5fc014f9c2ef70bd508eb837632b0.zip |
Fix bug #7693 - smbd changing mode of files on rename
When using "map archive", don't change the archive bit on
renames or writes with UNIX extensions turned on.
Jeremy.
Diffstat (limited to 'source3/smbd/fileio.c')
-rw-r--r-- | source3/smbd/fileio.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c index b4e8a1d5d4..aec6554436 100644 --- a/source3/smbd/fileio.c +++ b/source3/smbd/fileio.c @@ -312,14 +312,15 @@ ssize_t write_file(struct smb_request *req, fsp->modified = True; if (SMB_VFS_FSTAT(fsp, &fsp->fsp_name->st) == 0) { - int dosmode; trigger_write_time_update(fsp); - dosmode = dos_mode(fsp->conn, fsp->fsp_name); - if ((lp_store_dos_attributes(SNUM(fsp->conn)) || - MAP_ARCHIVE(fsp->conn)) && - !IS_DOS_ARCHIVE(dosmode)) { - file_set_dosmode(fsp->conn, fsp->fsp_name, + if (!fsp->posix_open && + (lp_store_dos_attributes(SNUM(fsp->conn)) || + MAP_ARCHIVE(fsp->conn))) { + int dosmode = dos_mode(fsp->conn, fsp->fsp_name); + if (!IS_DOS_ARCHIVE(dosmode)) { + file_set_dosmode(fsp->conn, fsp->fsp_name, dosmode | aARCH, NULL, false); + } } /* |