From 8c7979aae3f9073cc8426613d8d7594ddb560cf7 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Sun, 10 Jun 2018 20:19:35 +0200 Subject: [PATCH] Add some tests for non-supported embedded fileformats --- libmat2/office.py | 14 ++++++++++---- tests/data/embedded.docx | Bin 0 -> 24601 bytes tests/data/embedded.odt | Bin 0 -> 33019 bytes tests/test_libmat2.py | 13 +++++++++++++ 4 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 tests/data/embedded.docx create mode 100644 tests/data/embedded.odt diff --git a/libmat2/office.py b/libmat2/office.py index 90f7c7a..914fd39 100644 --- a/libmat2/office.py +++ b/libmat2/office.py @@ -40,7 +40,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): def _clean_internal_file(self, item: zipfile.ZipInfo, temp_folder: str, - zin: zipfile.ZipFile, zout: zipfile.ZipFile): + zin: zipfile.ZipFile, zout: zipfile.ZipFile) -> bool: output = '' zin.extract(member=item, path=temp_folder) if item.filename not in self.whitelist: @@ -48,7 +48,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): tmp_parser, mtype = parser_factory.get_parser(full_path) # type: ignore if not tmp_parser: print("%s's format (%s) isn't supported" % (item.filename, mtype)) - return + return False tmp_parser.remove_all() output = tmp_parser.output_filename else: @@ -57,6 +57,7 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): clean_zinfo = self._clean_zipinfo(zinfo) with open(output, 'rb') as f: zout.writestr(clean_zinfo, f.read()) + return True class MSOfficeParser(ArchiveBasedAbstractParser): @@ -104,7 +105,10 @@ class MSOfficeParser(ArchiveBasedAbstractParser): zout.writestr(item, zin.read(item)) continue - self._clean_internal_file(item, temp_folder, zin, zout) + if self._clean_internal_file(item, temp_folder, zin, zout) is False: + zout.close() + os.remove(self.output_filename) + return False shutil.rmtree(temp_folder) zout.close() @@ -156,7 +160,9 @@ class LibreOfficeParser(ArchiveBasedAbstractParser): elif item.filename == 'meta.xml': continue # don't keep metadata files - self._clean_internal_file(item, temp_folder, zin, zout) + if self._clean_internal_file(item, temp_folder, zin, zout) is False: + os.remove(self.output_filename) + return False shutil.rmtree(temp_folder) zout.close() diff --git a/tests/data/embedded.docx b/tests/data/embedded.docx new file mode 100644 index 0000000000000000000000000000000000000000..b134724ae59b939dff5432613800263cc7ed8098 GIT binary patch literal 24601 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 literal 0 HcmV?d00001 diff --git a/tests/data/embedded.odt b/tests/data/embedded.odt new file mode 100644 index 0000000000000000000000000000000000000000..62bf8cc7ccae13d1e2b16ba2f478d33ebed76e0e GIT binary patch literal 33019 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 literal 0 HcmV?d00001 diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index 7deeadc..c85f425 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py @@ -27,6 +27,19 @@ class TestParameterInjection(unittest.TestCase): os.remove('-ver') +class TestUnsupportedEmbeddedFiles(unittest.TestCase): + def test_odt_with_svg(self): + shutil.copy('./tests/data/embedded.odt', './tests/data/clean.odt') + p = office.LibreOfficeParser('./tests/data/clean.odt') + self.assertFalse(p.remove_all()) + os.remove('./tests/data/clean.odt') + + def test_docx_with_svg(self): + shutil.copy('./tests/data/embedded.docx', './tests/data/clean.docx') + p = office.MSOfficeParser('./tests/data/clean.docx') + self.assertFalse(p.remove_all()) + os.remove('./tests/data/clean.docx') + class TestUnsupportedFiles(unittest.TestCase): def test_pdf(self): shutil.copy('./tests/test_libmat2.py', './tests/clean.py')