diff options
| author | jvoisin | 2025-04-03 15:24:34 +0200 |
|---|---|---|
| committer | jvoisin | 2025-04-03 15:24:34 +0200 |
| commit | e740a9559f6e4a233c32a6b48ee0cd7efac4efbf (patch) | |
| tree | 7c3bac9e662151149f625f5ba82a5dea9b17790b | |
| parent | 2b58eece509c22a692f4de2512ec41c00e1d2728 (diff) | |
Properly handle an exception
```
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…
| -rw-r--r-- | libmat2/archive.py | 5 |
1 files changed, 4 insertions, 1 deletions
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): | |||
| 152 | self.filename, member_name, full_path) | 152 | self.filename, member_name, full_path) |
| 153 | break | 153 | break |
| 154 | 154 | ||
| 155 | zin.extract(member=item, path=temp_folder) | 155 | try: |
| 156 | zin.extract(member=item, path=temp_folder) | ||
| 157 | except OSError as e: | ||
| 158 | logging.error("Unable to extraxt %s from %s: %s", item, self.filename, e) | ||
| 156 | 159 | ||
| 157 | os.chmod(full_path, stat.S_IRUSR) | 160 | os.chmod(full_path, stat.S_IRUSR) |
| 158 | 161 | ||
