Skip to content

Commit 14474b6

Browse files
Zach Parksqwint
Zach Parks
authored andcommitted
WebHost: Prevent committing data packages with invalid checksums to database and prevent 500 error from invalid zip files. (ArchipelagoMW#3206)
1 parent 610a80a commit 14474b6

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

WebHostLib/upload.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,13 @@ def process_multidata(compressed_multidata, files={}):
6363
game_data = games_package_schema.validate(game_data)
6464
game_data = {key: value for key, value in sorted(game_data.items())}
6565
game_data["checksum"] = data_package_checksum(game_data)
66-
game_data_package = GameDataPackage(checksum=game_data["checksum"],
67-
data=pickle.dumps(game_data))
6866
if original_checksum != game_data["checksum"]:
6967
raise Exception(f"Original checksum {original_checksum} != "
7068
f"calculated checksum {game_data['checksum']} "
7169
f"for game {game}.")
70+
71+
game_data_package = GameDataPackage(checksum=game_data["checksum"],
72+
data=pickle.dumps(game_data))
7273
decompressed_multidata["datapackage"][game] = {
7374
"version": game_data.get("version", 0),
7475
"checksum": game_data["checksum"],
@@ -192,6 +193,8 @@ def uploads():
192193
res = upload_zip_to_db(zfile)
193194
except VersionException:
194195
flash(f"Could not load multidata. Wrong Version detected.")
196+
except Exception as e:
197+
flash(f"Could not load multidata. File may be corrupted or incompatible. ({e})")
195198
else:
196199
if res is str:
197200
return res

0 commit comments

Comments
 (0)