From 5c3db9a7cc49a98f9a5d935eb7dd099b2cb47448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20P=C3=B6hn?= Date: Wed, 19 Aug 2020 23:13:23 +0200 Subject: [PATCH] rewritemeta: overwrite existing metadata only if no exception occurred --- fdroidserver/rewritemeta.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index b4a3f63b..72c10607 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -21,6 +21,8 @@ from argparse import ArgumentParser import os import logging import io +import tempfile +import shutil from . import _ from . import common @@ -89,10 +91,12 @@ def main(): newbuilds.append(new) app.builds = newbuilds - try: - metadata.write_metadata(path, app) - finally: - pass + # rewrite to temporary file before overwriting existsing + # file in case there's a bug in write_metadata + with tempfile.TemporaryDirectory() as tmpdir: + tmp_path = os.path.join(tmpdir, os.path.basename(path)) + metadata.write_metadata(tmp_path, app) + shutil.move(tmp_path, path) logging.debug(_("Finished"))