浏览代码

check --repair: fix malfunctioning validator, fixes #3444

the major problem was the ('path' in item) expression.
the dict has bytes-typed keys there, so it never succeeded as it
looked for a str key. this is a 1.1 regression, 1.0 was fine.

the dict -> StableDict change is just for being more specific,
the check triggered correctly as StableDict subclasses dict,
it was just a bit too general.
Thomas Waldmann 7 年之前
父节点
当前提交
e09892caec
共有 1 个文件被更改,包括 1 次插入1 次删除
  1. 1 1
      src/borg/archive.py

+ 1 - 1
src/borg/archive.py

@@ -1457,7 +1457,7 @@ class ArchiveChecker:
             """
             item_keys = frozenset(key.encode() for key in self.manifest.item_keys)
             required_item_keys = frozenset(key.encode() for key in REQUIRED_ITEM_KEYS)
-            unpacker = RobustUnpacker(lambda item: isinstance(item, dict) and 'path' in item,
+            unpacker = RobustUnpacker(lambda item: isinstance(item, StableDict) and b'path' in item,
                                       self.manifest.item_keys)
             _state = 0