瀏覽代碼

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

Thomas Waldmann 5 年之前
父節點
當前提交
ec3fad0f85
共有 1 個文件被更改,包括 6 次插入1 次删除
  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: