[PATCH 6/7] added support to automatically add reference to OVAL definitions * to document their true origin, ease some debugging
Jeffrey Blank
blank at eclipse.ncsc.mil
Tue Sep 4 23:16:35 UTC 2012
Signed-off-by: Jeffrey Blank <blank at eclipse.ncsc.mil>
---
RHEL6/transforms/idtranslate.py | 14 +++++++++++---
RHEL6/transforms/relabelids.py | 2 +-
2 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/RHEL6/transforms/idtranslate.py b/RHEL6/transforms/idtranslate.py
index cce8071..638011c 100755
--- a/RHEL6/transforms/idtranslate.py
+++ b/RHEL6/transforms/idtranslate.py
@@ -68,10 +68,18 @@ class idtranslator:
str_id = "%s:%s:%d" % (pre, tagname_to_abbrev(tagname), i)
return str_id
- def translate(self, tree):
+ def translate(self, tree, store_defname=False, refsource=""):
for element in tree.getiterator():
- if element.get("id"):
- element.set("id", self.assign_id(element.tag, element.get("id")))
+ idname = element.get("id")
+ if idname:
+ # store the old name if requested (for OVAL definitions)
+ if store_defname and element.tag == ovalns + "definition":
+ metadata = element.find(ovalns + "metadata")
+ if metadata is None:
+ metadata = ET.SubElement(element, "metadata")
+ defnam = ET.SubElement(metadata, "reference", ref_id=idname, source=refsource)
+ # set the element to the new identifier
+ element.set("id", self.assign_id(element.tag, idname))
continue
if element.tag == ovalns + "filter":
element.text = self.assign_id("state", element.text)
diff --git a/RHEL6/transforms/relabelids.py b/RHEL6/transforms/relabelids.py
index a339616..2ebea6e 100755
--- a/RHEL6/transforms/relabelids.py
+++ b/RHEL6/transforms/relabelids.py
@@ -56,7 +56,7 @@ def main():
# rename all IDs in the oval file
ovaltree = parse_xml_file(ovalfile)
translator = idtranslate.idtranslator(idname+".ini", "oval:"+idname)
- ovaltree = translator.translate(ovaltree)
+ ovaltree = translator.translate(ovaltree, store_defname=True, refsource="scap-security-guide")
newovalfile = ovalfile.replace(".xml", "-" + idname + ".xml")
ET.ElementTree(ovaltree).write(newovalfile)
--
1.7.1
More information about the scap-security-guide
mailing list