summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rdiff-backup/CHANGELOG4
-rw-r--r--rdiff-backup/rdiff_backup/backup.py9
2 files changed, 13 insertions, 0 deletions
diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG
index 8df3b18..baf131b 100644
--- a/rdiff-backup/CHANGELOG
+++ b/rdiff-backup/CHANGELOG
@@ -1,6 +1,10 @@
New in v1.1.16 (????/??/??)
---------------------------
+Correctly handle updates to nested directories with unreadable permissions.
+Thanks to John Goerzen for the bug report. Closes Debian bugs #389134 and
+#411849. (Andrew Ferguson)
+
Manpage improvements from Justin Pryzby.
Improve the handling of directories with many small files when backing-up
diff --git a/rdiff-backup/rdiff_backup/backup.py b/rdiff-backup/rdiff_backup/backup.py
index 0cdad16..eab6c75 100644
--- a/rdiff-backup/rdiff_backup/backup.py
+++ b/rdiff-backup/rdiff_backup/backup.py
@@ -651,6 +651,15 @@ class PatchITRB(rorpiter.ITRBranch):
"""Finish processing directory"""
if self.dir_update:
assert self.base_rp.isdir()
+
+ if (Globals.process_uid != 0 and
+ self.dir_update.getperms() % 01000 < 0700):
+ # Directory's permissions were adjusted at the start to
+ # make it readable -- remove it from the list since they
+ # will be reset by the copy_attribs() call
+ self.CCPP.dir_perms_list.remove((self.base_rp,
+ self.dir_update.getperms()))
+
rpath.copy_attribs(self.dir_update, self.base_rp)
elif self.dir_replacement:
self.base_rp.rmdir()