From d530733290a7fe2a9ac11be6ec9b6ae600390d0e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Wed, 11 Nov 2020 14:46:15 +0100 Subject: [PATCH] fix stacktrace crash when env vars are badly set in config.yml This was trying to delete from a dict that was being iterated through. Python doesn't like that! --- fdroidserver/common.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index aa522da3..06970d1f 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -388,6 +388,7 @@ def read_config(opts): limit = config['git_mirror_size_limit'] config['git_mirror_size_limit'] = parse_human_readable_size(limit) + confignames_to_delete = set() for configname, dictvalue in config.items(): if configname == 'java_paths': new = dict() @@ -403,14 +404,17 @@ def read_config(opts): if env: config[configname] = env else: - del(config[configname]) + confignames_to_delete.add(configname) logging.error(_('Environment variable {var} from {configname} is not set!') .format(var=k, configname=configname)) else: - del(config[configname]) + confignames_to_delete.add(configname) logging.error(_('Unknown entry {key} in {configname}') .format(key=k, configname=configname)) + for configname in confignames_to_delete: + del(config[configname]) + return config