diff --git a/fail2ban/client/jailreader.py b/fail2ban/client/jailreader.py index 13432dc5..9943b697 100644 --- a/fail2ban/client/jailreader.py +++ b/fail2ban/client/jailreader.py @@ -54,7 +54,13 @@ class JailReader(ConfigReader): return self.__name def read(self): - return ConfigReader.read(self, "jail") + out = ConfigReader.read(self, "jail") + # Before returning -- verify that requested section + # exists at all + if not (self.__name in self.sections()): + raise ValueError("Jail %r was not found among available" + % self.__name) + return out def isEnabled(self): return self.__force_enable or self.__opts["enabled"] diff --git a/fail2ban/tests/clientreadertestcase.py b/fail2ban/tests/clientreadertestcase.py index 5e79dc04..e55420d8 100644 --- a/fail2ban/tests/clientreadertestcase.py +++ b/fail2ban/tests/clientreadertestcase.py @@ -107,6 +107,10 @@ option = %s class JailReaderTest(unittest.TestCase): + def testIncorrectJail(self): + jail = JailReader('XXXABSENTXXX', basedir=CONFIG_DIR) + self.assertRaises(ValueError, jail.read) + def testStockSSHJail(self): jail = JailReader('ssh-iptables', basedir=CONFIG_DIR) # we are running tests from root project dir atm self.assertTrue(jail.read())