From 9a768c19d0b3f7039584d640de9fd1322072517b Mon Sep 17 00:00:00 2001 From: sebres Date: Tue, 8 Aug 2017 21:48:50 +0200 Subject: [PATCH] Fixes raw to interpolated value by recursive substitution. Avoid too deeply recursive extended interpolation cross sections (test covered now); --- fail2ban/client/configparserinc.py | 4 ++-- fail2ban/tests/clientreadertestcase.py | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/fail2ban/client/configparserinc.py b/fail2ban/client/configparserinc.py index cc245b0a..7cc9b9fa 100644 --- a/fail2ban/client/configparserinc.py +++ b/fail2ban/client/configparserinc.py @@ -164,8 +164,8 @@ after = 1.conf except KeyError: continue else: - # get substituted value of opt in section: - v = self.get(sec, opt) + # get raw value of opt in section: + v = self.get(sec, opt, raw=True) else: try: v = self._defaults[opt] diff --git a/fail2ban/tests/clientreadertestcase.py b/fail2ban/tests/clientreadertestcase.py index 325a1d68..c3a10c36 100644 --- a/fail2ban/tests/clientreadertestcase.py +++ b/fail2ban/tests/clientreadertestcase.py @@ -170,24 +170,31 @@ a = def-a b = def-b,a:`%(a)s` c = def-c,b:"%(b)s" d = def-d-b:"%(known/b)s" + [jail] a = jail-a-%(test/a)s b = jail-b-%(test/b)s +y = %(test/y)s + [test] a = test-a-%(default/a)s b = test-b-%(known/b)s +x = %(test/x)s +y = %(jail/y)s """) self.assertTrue(self.c.read('g')) self.assertEqual(self.c.get('test', 'a'), 'test-a-def-a') self.assertEqual(self.c.get('test', 'b'), 'test-b-def-b,a:`test-a-def-a`') self.assertEqual(self.c.get('jail', 'a'), 'jail-a-test-a-def-a') - self.assertEqual(self.c.get('jail', 'b'), 'jail-b-test-b-def-b,a:`test-a-def-a`') - self.assertEqual(self.c.get('jail', 'c'), 'def-c,b:"jail-b-test-b-def-b,a:`test-a-def-a`"') + self.assertEqual(self.c.get('jail', 'b'), 'jail-b-test-b-def-b,a:`jail-a-test-a-def-a`') + self.assertEqual(self.c.get('jail', 'c'), 'def-c,b:"jail-b-test-b-def-b,a:`jail-a-test-a-def-a`"') self.assertEqual(self.c.get('jail', 'd'), 'def-d-b:"def-b,a:`jail-a-test-a-def-a`"') self.assertEqual(self.c.get('test', 'c'), 'def-c,b:"test-b-def-b,a:`test-a-def-a`"') self.assertEqual(self.c.get('test', 'd'), 'def-d-b:"def-b,a:`test-a-def-a`"') self.assertEqual(self.c.get('DEFAULT', 'c'), 'def-c,b:"def-b,a:`def-a`"') self.assertEqual(self.c.get('DEFAULT', 'd'), 'def-d-b:"def-b,a:`def-a`"') + self.assertRaises(Exception, self.c.get, 'test', 'x') + self.assertRaises(Exception, self.c.get, 'jail', 'y') class JailReaderTest(LogCaptureTestCase):