From e740a9559f6e4a233c32a6b48ee0cd7efac4efbf Mon Sep 17 00:00:00 2001 From: jvoisin <julien.voisin@dustri.org> Date: Thu, 3 Apr 2025 15:24:34 +0200 Subject: [PATCH] Properly handle an exception MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ``` Traceback (most recent call last): File "/builds/jvoisin/mat2/tests/test_deep_cleaning.py", line 147, in test_office meta = p.get_meta() File "/builds/jvoisin/mat2/libmat2/archive.py", line 155, in get_meta zin.extract(member=item, path=temp_folder) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/zipfile/__init__.py", line 1762, in extract return self._extract_member(member, path, pwd) ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.13/zipfile/__init__.py", line 1829, in _extract_member os.makedirs(upperdirs, exist_ok=True) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^ File "<frozen os>", line 227, in makedirs OSError: [Errno 28] No space left on device: '/tmp/tmptl1ibyv6/word/theme' ``` This should never happen™, but just in case… --- libmat2/archive.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libmat2/archive.py b/libmat2/archive.py index 13f9188..71ece3d 100644 --- a/libmat2/archive.py +++ b/libmat2/archive.py @@ -152,7 +152,10 @@ class ArchiveBasedAbstractParser(abstract.AbstractParser): self.filename, member_name, full_path) break - zin.extract(member=item, path=temp_folder) + try: + zin.extract(member=item, path=temp_folder) + except OSError as e: + logging.error("Unable to extraxt %s from %s: %s", item, self.filename, e) os.chmod(full_path, stat.S_IRUSR) -- GitLab