The branch, v3-6-test has been updated
via a99388b Fix bug #7693 - smbd changing mode of files on rename
from 6865c7c s3: Remove a global variable in bugfix for bug 7665
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test
- Log -----------------------------------------------------------------
commit a99388bebadd9016f556193b43da46a0bd9bd20a
Author: Jeremy Allison <[email protected]>
Date: Wed Sep 22 12:26:13 2010 -0700
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.
(cherry picked from commit 314dc23ecfb5fc014f9c2ef70bd508eb837632b0)
-----------------------------------------------------------------------
Summary of changes:
source3/smbd/fileio.c | 13 +++++++------
source3/smbd/reply.c | 5 +++--
2 files changed, 10 insertions(+), 8 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source3/smbd/fileio.c b/source3/smbd/fileio.c
index b4e8a1d..aec6554 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);
+ }
}
/*
diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c
index ba4c90d..72f09cd 100644
--- a/source3/smbd/reply.c
+++ b/source3/smbd/reply.c
@@ -5976,8 +5976,9 @@ 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))) {
+ if (!lp_unix_extensions() &&
+ (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) {
--
Samba Shared Repository