[SCM] The rsync repository. - branch master updated

Rsync CVS commit messages rsync-cvs at lists.samba.org
Sat Sep 3 13:41:50 MDT 2011


The branch, master has been updated
       via  a470b67 Dirs need +rx as well as +w for non-super xfers. Fixes bug 8242.
      from  5561c14 Move implied_dot_dir=1, just to be safe.

;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit a470b675af97922b0af0ede71d4a8aaf947170d2
Author: Wayne Davison <wayned at samba.org>
Date:   Sat Sep 3 12:40:12 2011 -0700

    Dirs need +rx as well as +w for non-super xfers.
    Fixes bug 8242.

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

Summary of changes:
 generator.c |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/generator.c b/generator.c
index 631a559..30e3f32 100644
--- a/generator.c
+++ b/generator.c
@@ -1362,12 +1362,13 @@ static void recv_generator(char *fname, struct file_struct *file, int ndx,
 		    && INFO_GTE(NAME, 1) && code != FNONE && f_out != -1)
 			rprintf(code, "%s/\n", fname);
 
-		/* We need to ensure that the dirs in the transfer have writable
-		 * permissions during the time we are putting files within them.
-		 * This is then fixed after the transfer is done. */
+		/* We need to ensure that the dirs in the transfer have both
+		 * readable and writable permissions during the time we are
+		 * putting files within them.  This is then restored to the
+		 * former permissions after the transfer is done. */
 #ifdef HAVE_CHMOD
-		if (!am_root && !(file->mode & S_IWUSR) && dir_tweaking) {
-			mode_t mode = file->mode | S_IWUSR;
+		if (!am_root && (file->mode & S_IRWXU) != S_IRWXU && dir_tweaking) {
+			mode_t mode = file->mode | S_IRWXU;
 			if (do_chmod(fname, mode) < 0) {
 				rsyserr(FERROR_XFER, errno,
 					"failed to modify permissions on %s",


-- 
The rsync repository.


More information about the rsync-cvs mailing list