diff options
Diffstat (limited to 'rdiff-backup/rdiff_backup')
-rw-r--r-- | rdiff-backup/rdiff_backup/Main.py | 2 | ||||
-rw-r--r-- | rdiff-backup/rdiff_backup/rpath.py | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/rdiff-backup/rdiff_backup/Main.py b/rdiff-backup/rdiff_backup/Main.py index 70adcfc..d9b57e3 100644 --- a/rdiff-backup/rdiff_backup/Main.py +++ b/rdiff-backup/rdiff_backup/Main.py @@ -598,7 +598,7 @@ def restore_set_root(rpin): i = len(pathcomps) while i >= min_len_pathcomps: parent_dir = rpath.RPath(rpin.conn, "/".join(pathcomps[:i])) - if (parent_dir.isdir() and + if (parent_dir.isdir() and parent_dir.is_readable() and "rdiff-backup-data" in parent_dir.listdir()): break if parent_dir.path == rpin.conn.Globals.get('restrict_path'): return None diff --git a/rdiff-backup/rdiff_backup/rpath.py b/rdiff-backup/rdiff_backup/rpath.py index d6f3655..03562e3 100644 --- a/rdiff-backup/rdiff_backup/rpath.py +++ b/rdiff-backup/rdiff_backup/rpath.py @@ -599,6 +599,10 @@ class RORPath: """Signal that rorp is a signature/diff for a hardlink file""" self.data['linked'] = index + def is_readable(self): + """Check whether user can read the file or directory""" + return self.conn.os.access(self.path, self.conn.os.R_OK) + def open(self, mode): """Return file type object if any was given using self.setfile""" if mode != "rb": raise RPathException("Bad mode %s" % mode) |