From a1a06d023ebd4f92629d969b9e045bb4f1f882b9 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Tue, 18 Sep 2018 22:44:21 +0200 Subject: [PATCH] Insert archive members in lexicographic order --- libmat2/archive.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libmat2/archive.py b/libmat2/archive.py index 2808b9f..7b9f335 100644 --- a/libmat2/archive.py +++ b/libmat2/archive.py @@ -74,7 +74,9 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): temp_folder = tempfile.mkdtemp() abort = False - for item in zin.infolist(): + # Since files order is a fingerprint factor, + # we're iterating (and thus inserting) them in lexicographic order. + for item in sorted(zin.infolist(), key=lambda z: z.filename): if item.filename[-1] == '/': # `is_dir` is added in Python3.6 continue # don't keep empty folders @@ -92,8 +94,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): pass elif any(map(lambda r: r.search(item.filename), self.files_to_omit)): continue - else: - # supported files that we want to clean then add + else: # supported files that we want to first clean, then add tmp_parser, mtype = parser_factory.get_parser(full_path) # type: ignore if not tmp_parser: if self.unknown_member_policy == UnknownMemberPolicy.OMIT: