diff options
| author | 2021-01-10 14:29:09 -0800 | |
|---|---|---|
| committer | 2021-01-10 17:04:59 -0800 | |
| commit | fd7e6c03cee43d0d4eb5a4a9821b9b6b4932c55e (patch) | |
| tree | 9ad9abd81a099f9caab73100e9401daef70b55e6 | |
| parent | Read the Python path and args from the config file (diff) | |
Add error handling to reading of the nsjail config
| -rw-r--r-- | snekbox/nsjail.py | 18 | 
1 files changed, 16 insertions, 2 deletions
diff --git a/snekbox/nsjail.py b/snekbox/nsjail.py index 6972a40..d5659e5 100644 --- a/snekbox/nsjail.py +++ b/snekbox/nsjail.py @@ -47,8 +47,22 @@ class NsJail:      def _read_config() -> NsJailConfig:          """Read the NsJail config at `NSJAIL_CFG` and return a protobuf Message object."""          config = NsJailConfig() -        with open(NSJAIL_CFG, encoding="utf-8") as f: -            text_format.Parse(f.read(), config) + +        try: +            with open(NSJAIL_CFG, encoding="utf-8") as f: +                config_text = f.read() +        except FileNotFoundError: +            log.fatal(f"The NsJail config at {NSJAIL_CFG!r} could not be found.") +            sys.exit(1) +        except OSError as e: +            log.fatal(f"The NsJail config at {NSJAIL_CFG!r} could not read.", exc_info=e) +            sys.exit(1) + +        try: +            text_format.Parse(config_text, config) +        except text_format.ParseError as e: +            log.fatal(f"The NsJail config at {NSJAIL_CFG!r} could not be parsed.", exc_info=e) +            sys.exit(1)          return config  |