[SCM] Samba Shared Repository - branch v4-0-test updated

Karolin Seeger kseeger at samba.org
Mon Jun 10 15:10:04 MDT 2013


The branch, v4-0-test has been updated
       via  9328284 When message-type is drvupgrade, MSG_DEBUG should be replaced with MSG_PRINTER_DRVUPGRADE.
       via  865765c Check for WRITE_ACCESS on the file before overriding an EACCESS.
       via  e90f140 Ensure we don't try the open_file_fchmod() if we can't write to the file.
       via  02a9d78 Remove indentation around code wrapped by unneeded CAN_WRITE.
       via  7391cae Add early return in file_set_dosmode() on a read only share.
      from  d0ec11d BUG 9881: Check for system libtevent.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit 93282840a193e107cb482494c76b26b681e8bd8d
Author: Peng Haitao <penght at cn.fujitsu.com>
Date:   Wed May 22 14:03:13 2013 -0700

    When message-type is drvupgrade, MSG_DEBUG should be replaced with MSG_PRINTER_DRVUPGRADE.
    
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Michael Adam <obnox at samba.org>
    
    Fix bug #9941 - Fix a bug of drvupgrade of smbcontrol.
    
    Autobuild-User(v4-0-test): Karolin Seeger <kseeger at samba.org>
    Autobuild-Date(v4-0-test): Mon Jun 10 23:09:33 CEST 2013 on sn-devel-104

commit 865765c24c45625b1f1bf901147f157667f397e5
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Apr 25 14:06:03 2013 -0700

    Check for WRITE_ACCESS on the file before overriding an EACCESS.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    
    Autobuild-User(master): Volker Lendecke <vl at samba.org>
    Autobuild-Date(master): Sat Apr 27 15:57:17 CEST 2013 on sn-devel-104
    (cherry picked from commit 5185460067229a342ddf3951ecc968017c2ed4df)
    
    The last 4 patches address bug #9794 - opening/editing or copying MS files
    causes a core dump with invalid lock order.

commit e90f140baf54c2e8fcbefc273e1d760900deea9a
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Apr 25 14:02:24 2013 -0700

    Ensure we don't try the open_file_fchmod() if we can't write to the file.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 77e3099483489ef4d59087dc6542fe7f7b589224)

commit 02a9d789d1c81fff2889109dd162be3f829bc126
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Apr 25 14:00:42 2013 -0700

    Remove indentation around code wrapped by unneeded CAN_WRITE.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit a91aac4a5f0bd2077be267e49d1fc4f0321bb39c)

commit 7391caec00d05963dd6f4e05130a86a207294669
Author: Jeremy Allison <jra at samba.org>
Date:   Thu Apr 25 13:59:22 2013 -0700

    Add early return in file_set_dosmode() on a read only share.
    
    Signed-off-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Volker Lendecke <vl at samba.org>
    (cherry picked from commit 0d88b37fc63023eeb749080713449b124e346e9e)

-----------------------------------------------------------------------

Summary of changes:
 source3/smbd/dosmode.c     |   57 ++++++++++++++++++++++++++-----------------
 source3/utils/smbcontrol.c |    2 +-
 2 files changed, 35 insertions(+), 24 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/smbd/dosmode.c b/source3/smbd/dosmode.c
index ad04a65..3152631 100644
--- a/source3/smbd/dosmode.c
+++ b/source3/smbd/dosmode.c
@@ -419,6 +419,10 @@ static bool set_ea_dos_attribute(connection_struct *conn,
 		if(!CAN_WRITE(conn) || !lp_dos_filemode(SNUM(conn)))
 			return false;
 
+		if (!can_write_to_file(conn, smb_fname)) {
+			return false;
+		}
+
 		/*
 		 * We need to open the file with write access whilst
 		 * still in our current user context. This ensures we
@@ -706,6 +710,12 @@ int file_set_dosmode(connection_struct *conn, struct smb_filename *smb_fname,
 	int ret = -1, lret = -1;
 	uint32_t old_mode;
 	struct timespec new_create_timespec;
+	files_struct *fsp = NULL;
+
+	if (!CAN_WRITE(conn)) {
+		errno = EROFS;
+		return -1;
+	}
 
 	/* We only allow READONLY|HIDDEN|SYSTEM|DIRECTORY|ARCHIVE here. */
 	dosmode &= (SAMBA_ATTRIBUTES_MASK | FILE_ATTRIBUTE_OFFLINE);
@@ -848,29 +858,30 @@ int file_set_dosmode(connection_struct *conn, struct smb_filename *smb_fname,
 		bits on a file. Just like file_ntimes below.
 	*/
 
-	/* Check if we have write access. */
-	if (CAN_WRITE(conn)) {
-		/*
-		 * We need to open the file with write access whilst
-		 * still in our current user context. This ensures we
-		 * are not violating security in doing the fchmod.
-		 */
-		files_struct *fsp;
-		if (!NT_STATUS_IS_OK(open_file_fchmod(conn, smb_fname,
-				     &fsp)))
-			return -1;
-		become_root();
-		ret = SMB_VFS_FCHMOD(fsp, unixmode);
-		unbecome_root();
-		close_file(NULL, fsp, NORMAL_CLOSE);
-		if (!newfile) {
-			notify_fname(conn, NOTIFY_ACTION_MODIFIED,
-				     FILE_NOTIFY_CHANGE_ATTRIBUTES,
-				     smb_fname->base_name);
-		}
-		if (ret == 0) {
-			smb_fname->st.st_ex_mode = unixmode;
-		}
+	if (!can_write_to_file(conn, smb_fname)) {
+		errno = EACCES;
+		return -1;
+	}
+
+	/*
+	 * We need to open the file with write access whilst
+	 * still in our current user context. This ensures we
+	 * are not violating security in doing the fchmod.
+	 */
+	if (!NT_STATUS_IS_OK(open_file_fchmod(conn, smb_fname,
+			     &fsp)))
+		return -1;
+	become_root();
+	ret = SMB_VFS_FCHMOD(fsp, unixmode);
+	unbecome_root();
+	close_file(NULL, fsp, NORMAL_CLOSE);
+	if (!newfile) {
+		notify_fname(conn, NOTIFY_ACTION_MODIFIED,
+			     FILE_NOTIFY_CHANGE_ATTRIBUTES,
+			     smb_fname->base_name);
+	}
+	if (ret == 0) {
+		smb_fname->st.st_ex_mode = unixmode;
 	}
 
 	return( ret );
diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c
index 900ae9a..a522782 100644
--- a/source3/utils/smbcontrol.c
+++ b/source3/utils/smbcontrol.c
@@ -926,7 +926,7 @@ static bool do_drvupgrade(struct tevent_context *ev_ctx,
 		return False;
 	}
 
-	return send_message(msg_ctx, pid, MSG_DEBUG, argv[1],
+	return send_message(msg_ctx, pid, MSG_PRINTER_DRVUPGRADE, argv[1],
 			    strlen(argv[1]) + 1);
 }
 


-- 
Samba Shared Repository


More information about the samba-cvs mailing list