diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py index b00ebdbd..6a5407e0 100644 --- a/app/tasks/importtasks.py +++ b/app/tasks/importtasks.py @@ -20,7 +20,7 @@ import shutil import sys from json import JSONDecodeError -from zipfile import ZipFile +from zipfile import ZipFile, BadZipFile import gitdb from flask import url_for @@ -306,13 +306,16 @@ def _check_zip_file(temp_dir: str, zf: ZipFile) -> bool: def _safe_extract_zip(temp_dir: str, archive_path: str) -> bool: - with ZipFile(archive_path, 'r') as zf: - if not _check_zip_file(temp_dir, zf): - return False - - # Extract all - for member in zf.infolist(): - zf.extract(member, temp_dir) + try: + with ZipFile(archive_path, 'r') as zf: + if not _check_zip_file(temp_dir, zf): + return False + + # Extract all + for member in zf.infolist(): + zf.extract(member, temp_dir) + except BadZipFile as e: + raise TaskError(str(e)) return True