Skip to content

Commit

Permalink
Don't crash when one of the configuration files is empty (matrix-org#…
Browse files Browse the repository at this point in the history
…7341)

If the admin adds a `.yaml` file that's either empty or doesn't parse into a dict to a config directory (e.g. `conf.d` for debs installs), stuff like matrix-org#7322 would happen. This PR checks that the file is correctly parsed into a dict, or ignores it with a warning if it parses into any other type (including `None` for empty files).

Fixes matrix-org#7322
  • Loading branch information
babolivier authored Apr 27, 2020
1 parent 7bfe090 commit cc9eceb
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 0 deletions.
1 change: 1 addition & 0 deletions changelog.d/7341.bugfix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Fix bad error handling that would cause Synapse to crash if it's provided with a YAML configuration file that's either empty or doesn't parse into a key-value map.
6 changes: 6 additions & 0 deletions synapse/config/_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -657,6 +657,12 @@ def read_config_files(config_files):
for config_file in config_files:
with open(config_file) as file_stream:
yaml_config = yaml.safe_load(file_stream)

if not isinstance(yaml_config, dict):
err = "File %r is empty or doesn't parse into a key-value map. IGNORING."
print(err % (config_file,))
continue

specified_config.update(yaml_config)

if "server_name" not in specified_config:
Expand Down

0 comments on commit cc9eceb

Please sign in to comment.