From 253e86a72e0c8e4e014b4b08fa587afe1de4db22 Mon Sep 17 00:00:00 2001 From: Will Hunt Date: Wed, 12 Apr 2023 12:28:46 +0100 Subject: Throw if the appservice config list is the wrong type (#15425) * raise a ConfigError on an invalid app_service_config_files * changelog * Move config check to read_config * Add test * Ensure list also contains strings --- synapse/config/appservice.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'synapse') diff --git a/synapse/config/appservice.py b/synapse/config/appservice.py index 00182090b2..fd89960e72 100644 --- a/synapse/config/appservice.py +++ b/synapse/config/appservice.py @@ -33,6 +33,16 @@ class AppServiceConfig(Config): def read_config(self, config: JsonDict, **kwargs: Any) -> None: self.app_service_config_files = config.get("app_service_config_files", []) + if not isinstance(self.app_service_config_files, list) or not all( + type(x) is str for x in self.app_service_config_files + ): + # type-ignore: this function gets arbitrary json value; we do use this path. + raise ConfigError( + "Expected '%s' to be a list of AS config files:" + % (self.app_service_config_files), + "app_service_config_files", + ) + self.track_appservice_user_ips = config.get("track_appservice_user_ips", False) @@ -40,10 +50,6 @@ def load_appservices( hostname: str, config_files: List[str] ) -> List[ApplicationService]: """Returns a list of Application Services from the config files.""" - if not isinstance(config_files, list): - # type-ignore: this function gets arbitrary json value; we do use this path. - logger.warning("Expected %s to be a list of AS config files.", config_files) # type: ignore[unreachable] - return [] # Dicts of value -> filename seen_as_tokens: Dict[str, str] = {} -- cgit 1.4.1