diff --git a/CTFd/utils/exports/__init__.py b/CTFd/utils/exports/__init__.py index b7dded12..00a86f29 100644 --- a/CTFd/utils/exports/__init__.py +++ b/CTFd/utils/exports/__init__.py @@ -96,6 +96,14 @@ def import_ctf(backup, erase=True): if info.file_size > max_content_length: raise zipfile.LargeZipFile + # Get list of directories in zipfile + member_dirs = [os.path.split(m)[0] for m in members if "/" in m] + if "db" not in member_dirs: + raise Exception( + 'CTFd couldn\'t find the "db" folder in this backup. ' + "The backup may be malformed or corrupted and the import process cannot continue." + ) + try: alembic_version = json.loads(backup.open("db/alembic_version.json").read()) alembic_version = alembic_version["results"][0]["version_num"]