Also fixed issue removing content that did not have associated puppet
content.
Fixes bug #7897
---
src/secstate/main.py | 23 ++++++++++++-----------
src/secstate/util.py | 8 ++++++--
2 files changed, 18 insertions(+), 13 deletions(-)
diff --git a/src/secstate/main.py b/src/secstate/main.py
index 9bd0579..3f47b7b 100644
--- a/src/secstate/main.py
+++ b/src/secstate/main.py
@@ -468,17 +468,18 @@ class Secstate:
elif self.content.has_key(benchmark_id):
cfg = load_config(self.content_configs[benchmark_id])
- rem_puppet = set(json.loads(cfg.get(benchmark_id, 'puppet')))
- in_use = set()
- for key in self.content:
- if key != benchmark_id:
- key_cfg = load_config(self.content_configs[benchmark_id])
- if key_cfg.has_option(benchmark_id, 'puppet'):
- in_use = in_use.union(rem_puppet,
set(json.loads(key_cfg.get(benchmark_id, 'puppet'))))
-
- for puppet_file in rem_puppet:
- if puppet_file not in in_use:
- os.remove(os.path.join(self.config.get('secstate',
'puppet_dir'), puppet_file))
+ if cfg.has_option(benchmark_id, 'puppet'):
+ rem_puppet = set(json.loads(cfg.get(benchmark_id, 'puppet')))
+ in_use = set()
+ for key in self.content:
+ if key != benchmark_id:
+ key_cfg = load_config(self.content_configs[benchmark_id])
+ if key_cfg.has_option(benchmark_id, 'puppet'):
+ in_use = in_use.union(rem_puppet,
set(json.loads(key_cfg.get(benchmark_id, 'puppet'))))
+
+ for puppet_file in rem_puppet:
+ if puppet_file not in in_use:
+ os.remove(os.path.join(self.config.get('secstate',
'puppet_dir'), puppet_file))
try:
if os.path.split(cfg.get(benchmark_id, "file"))[0] !=
self.config.get('secstate', 'oval_dir'):
diff --git a/src/secstate/util.py b/src/secstate/util.py
index 200036e..42d2e29 100644
--- a/src/secstate/util.py
+++ b/src/secstate/util.py
@@ -277,8 +277,12 @@ def result_to_html(input, stylesheet, output, media=None):
return True
def is_benchmark(benchmark):
- tree = xml.dom.minidom.parse(benchmark)
- return (tree.getElementsByTagName("Benchmark") != [])
+ try:
+ tree = xml.dom.minidom.parse(benchmark)
+ return (tree.getElementsByTagName("Benchmark") != [])
+ except xml.parsers.expat.ExpatError,e:
+ sys.stderr.write("Error parsing '%(file)s': %(err)s" %
{'file':benchmark, 'err':e})
+ return False
def get_benchmark_id(benchmark):
tree = xml.dom.minidom.parse(benchmark)
--
1.7.2.2
Show replies by date