reject bad index files with a meaningful error
authorPhilipp Gesang <philipp.gesang@intra2net.com>
Mon, 14 Aug 2017 14:04:53 +0000 (16:04 +0200)
committerThomas Jarosch <thomas.jarosch@intra2net.com>
Mon, 2 Apr 2018 11:34:09 +0000 (13:34 +0200)
deltatar/deltatar.py

index 6f8cbb1..378310a 100644 (file)
@@ -1387,8 +1387,15 @@ class DeltaTar(object):
                                    tarobj=index_it.tar_obj)
         elif mode == "diff":
             helper = RestoreHelper(self, cwd, backup_indexes_paths, disaster=disaster)
-            # get iterator from newest index at _data[0]
-            index_it = self.iterate_index_path(helper._data[0]["path"])
+            try:
+                # get iterator from newest index at _data[0]
+                index1 = helper._data[0]["path"]
+                index_it = self.iterate_index_path(index1)
+            except tarfile.DecryptionError as exn:
+                self.logger.error("failed to decrypt file [%s]: %s; is this an "
+                                  "actual index file?"
+                                  % (str(exn), index1))
+                return [(index1, exn)]
 
         dir_it = self._recursive_walk_dir('.')
         dir_path_it = self.jsonize_path_iterator(dir_it)