[SCM] Samba Shared Repository - branch v3-6-test updated

Jeremy Allison jra at samba.org
Wed Sep 22 13:30:00 MDT 2010


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 <jra at samba.org>
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


More information about the samba-cvs mailing list