Răsfoiți Sursa

Merge pull request #99 from ThomasWaldmann/attic_issue_232

fix Traceback when running check --repair, attic issue #232
TW 10 ani în urmă
părinte
comite
9cb038af3a
2 a modificat fișierele cu 7 adăugiri și 0 ștergeri
  1. 4 0
      borg/archive.py
  2. 3 0
      borg/cache.py

+ 4 - 0
borg/archive.py

@@ -755,6 +755,10 @@ class ArchiveChecker:
                 for chunk_id, cdata in zip(items, repository.get_many(items)):
                     unpacker.feed(self.key.decrypt(chunk_id, cdata))
                     for item in unpacker:
+                        if not isinstance(item, dict):
+                            self.report_progress('Did not get expected metadata dict - archive corrupted!',
+                                                 error=True)
+                            continue
                         yield item
 
         repository = cache_if_remote(self.repository)

+ 3 - 0
borg/cache.py

@@ -287,6 +287,9 @@ class Cache:
                 add(chunk_idx, item_id, len(data), len(chunk))
                 unpacker.feed(data)
                 for item in unpacker:
+                    if not isinstance(item, dict):
+                        print('Error: Did not get expected metadata dict - archive corrupted!')
+                        continue
                     if b'chunks' in item:
                         for chunk_id, size, csize in item[b'chunks']:
                             add(chunk_idx, chunk_id, size, csize)