From 0694fbc7a965ca3bcadeaadd3897581f07c6c5e9 Mon Sep 17 00:00:00 2001 From: Stephen Ma Date: Wed, 22 Feb 2017 11:09:04 -0800 Subject: [PATCH] Don't open subdirectories rootwrap filter directories A rootwrap filter directory may contain subdirectories. The rootwrap daemon will crash when it tries to load filters from subdirectories. So subdirectories should be skipped. Change-Id: I4f618734300bf5eb81282fbf8fc213f995a4fe59 --- oslo_rootwrap/tests/test_rootwrap.py | 1 + oslo_rootwrap/wrapper.py | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/oslo_rootwrap/tests/test_rootwrap.py b/oslo_rootwrap/tests/test_rootwrap.py index fb8f804..13c7282 100644 --- a/oslo_rootwrap/tests/test_rootwrap.py +++ b/oslo_rootwrap/tests/test_rootwrap.py @@ -46,6 +46,7 @@ class RootwrapLoaderTestCase(testtools.TestCase): def test_strict_switched_off_in_configparser(self): temp_dir = self.useFixture(fixtures.TempDir()).path + os.mkdir(os.path.join(temp_dir, 'nested')) temp_file = os.path.join(temp_dir, 'test.conf') f = open(temp_file, 'w') f.write("""[Filters] diff --git a/oslo_rootwrap/wrapper.py b/oslo_rootwrap/wrapper.py index 998beae..f5499fb 100644 --- a/oslo_rootwrap/wrapper.py +++ b/oslo_rootwrap/wrapper.py @@ -117,9 +117,12 @@ def load_filters(filters_path): continue for filterfile in filter(lambda f: not f.startswith('.'), os.listdir(filterdir)): + filterfilepath = os.path.join(filterdir, filterfile) + if not os.path.isfile(filterfilepath): + continue kwargs = {"strict": False} if six.PY3 else {} filterconfig = moves.configparser.RawConfigParser(**kwargs) - filterconfig.read(os.path.join(filterdir, filterfile)) + filterconfig.read(filterfilepath) for (name, value) in filterconfig.items("Filters"): filterdefinition = [s.strip() for s in value.split(',')] newfilter = build_filter(*filterdefinition)