| Index: third_party/buildbot_8_4p1/buildbot/master.py
|
| diff --git a/third_party/buildbot_8_4p1/buildbot/master.py b/third_party/buildbot_8_4p1/buildbot/master.py
|
| index 9ecc2d0e5596daf0132c9a036222ce05c3a814e2..4b322eebeaed284fd029ea935c3240b1373208c6 100644
|
| --- a/third_party/buildbot_8_4p1/buildbot/master.py
|
| +++ b/third_party/buildbot_8_4p1/buildbot/master.py
|
| @@ -14,6 +14,7 @@
|
| # Copyright Buildbot Team Members
|
|
|
|
|
| +import re
|
| import os
|
| import signal
|
| import time
|
| @@ -355,6 +356,22 @@ class BuildMaster(service.MultiService):
|
| caches_config = config.get("caches", {})
|
| autoBuildCacheRatio = config.get("autoBuildCacheRatio", None)
|
|
|
| + # load validation, with defaults, and verify no unrecognized
|
| + # keys are included.
|
| + validation_defaults = {
|
| + 'branch': re.compile(r'^[\w.+/~-]*$'),
|
| + 'revision': re.compile(r'^[\w.+/~-]*$'),
|
| + 'property_name': re.compile(r'^[\w\.\-\/\~:]*$'),
|
| + 'property_value': re.compile(r'^[\w\.\-\/\~:]*$'),
|
| + }
|
| + validation_config = validation_defaults.copy()
|
| + validation_config.update(config.get("validation", {}))
|
| + v_config_keys = set(validation_config.keys())
|
| + v_default_keys = set(validation_defaults.keys())
|
| + if v_config_keys > v_default_keys:
|
| + raise ValueError("unrecognized validation key(s): %s" %
|
| + (", ".join(v_config_keys - v_default_keys,)))
|
| +
|
| except KeyError:
|
| log.msg("config dictionary is missing a required parameter")
|
| log.msg("leaving old configuration in place")
|
| @@ -382,6 +399,7 @@ class BuildMaster(service.MultiService):
|
| raise KeyError("must have a 'slaves' key")
|
|
|
| self.config.changeHorizon = changeHorizon
|
| + self.config.validation = validation_config
|
|
|
| change_source = config.get('change_source', [])
|
| if isinstance(change_source, (list, tuple)):
|
|
|