Browse Source

config: reject non-json-serialisable writes

see #4788
master
SomberNight 7 years ago
parent
commit
6958c0ccc3
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 6
      electrum/simple_config.py
  2. 2
      electrum/storage.py

6
electrum/simple_config.py

@ -140,6 +140,12 @@ class SimpleConfig(PrintError):
if not self.is_modifiable(key): if not self.is_modifiable(key):
self.print_stderr("Warning: not changing config key '%s' set on the command line" % key) self.print_stderr("Warning: not changing config key '%s' set on the command line" % key)
return return
try:
json.dumps(key)
json.dumps(value)
except:
self.print_error(f"json error: cannot save {repr(key)} ({repr(value)})")
return
self._set_key_in_user_config(key, value, save) self._set_key_in_user_config(key, value, save)
def _set_key_in_user_config(self, key, value, save=True): def _set_key_in_user_config(self, key, value, save=True):

2
electrum/storage.py

@ -90,7 +90,7 @@ class JsonDB(PrintError):
json.dumps(key, cls=util.MyEncoder) json.dumps(key, cls=util.MyEncoder)
json.dumps(value, cls=util.MyEncoder) json.dumps(value, cls=util.MyEncoder)
except: except:
self.print_error("json error: cannot save", key) self.print_error(f"json error: cannot save {repr(key)} ({repr(value)})")
return return
with self.db_lock: with self.db_lock:
if value is not None: if value is not None:

Loading…
Cancel
Save