Sfoglia il codice sorgente

Repository.open: use stat() to check for repo dir, fixes #4695

Thomas Waldmann 5 anni fa
parent
commit
ec3fad0f85
1 ha cambiato i file con 6 aggiunte e 1 eliminazioni
  1. 6 1
      src/borg/repository.py

+ 6 - 1
src/borg/repository.py

@@ -2,6 +2,7 @@ import errno
 import mmap
 import os
 import shutil
+import stat
 import struct
 import time
 from binascii import hexlify, unhexlify
@@ -386,8 +387,12 @@ class Repository:
 
     def open(self, path, exclusive, lock_wait=None, lock=True):
         self.path = path
-        if not os.path.isdir(path):
+        try:
+            st = os.stat(path)
+        except FileNotFoundError:
             raise self.DoesNotExist(path)
+        if not stat.S_ISDIR(st.st_mode):
+            raise self.InvalidRepository(path)
         if lock:
             self.lock = Lock(os.path.join(path, 'lock'), exclusive, timeout=lock_wait, kill_stale_locks=hostname_is_unique()).acquire()
         else: