[Open-scap] [PATCH] Use xccdf_result_to_dom
Josh Adams
jadams at tresys.com
Wed Jun 2 21:08:11 UTC 2010
It appears that I forgot to actually use the xccdf_result_to_dom
function that I wrote in my export series of patches. I also added a
few null checks to the xccdf_rule_result_to_dom function.
---
src/XCCDF/item.c | 1 +
src/XCCDF/result.c | 14 ++++++++++----
2 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/src/XCCDF/item.c b/src/XCCDF/item.c
index 44a649b..36fbadb 100644
--- a/src/XCCDF/item.c
+++ b/src/XCCDF/item.c
@@ -391,6 +391,7 @@ xmlNode *xccdf_item_to_dom(struct xccdf_item *item, xmlDoc *doc, xmlNode *parent
break;
case XCCDF_RESULT:
xmlNodeSetName(item_node,BAD_CAST "Result");
+ xccdf_rule_to_dom(XPROFILE(item), item_node, doc, parent);
break;
case XCCDF_GROUP:
xmlNodeSetName(item_node,BAD_CAST "Group");
diff --git a/src/XCCDF/result.c b/src/XCCDF/result.c
index 07df543..28b50a2 100644
--- a/src/XCCDF/result.c
+++ b/src/XCCDF/result.c
@@ -583,7 +583,8 @@ xmlNode *xccdf_rule_result_to_dom(struct xccdf_rule_result *result, xmlDoc *doc,
xmlNewProp(result_node, BAD_CAST "idref", BAD_CAST idref);
xccdf_role_t role = xccdf_rule_result_get_role(result);
- xmlNewProp(result_node, BAD_CAST "role", BAD_CAST XCCDF_ROLE_MAP[role - 1].string);
+ if (role)
+ xmlNewProp(result_node, BAD_CAST "role", BAD_CAST XCCDF_ROLE_MAP[role - 1].string);
time_t date = xccdf_rule_result_get_time(result);
struct tm *lt = localtime(&date);
@@ -593,7 +594,8 @@ xmlNode *xccdf_rule_result_to_dom(struct xccdf_rule_result *result, xmlDoc *doc,
xmlNewProp(result_node, BAD_CAST "date", BAD_CAST timestamp);
xccdf_level_t severity = xccdf_rule_result_get_severity(result);
- xmlNewProp(result_node, BAD_CAST "severity", BAD_CAST XCCDF_LEVEL_MAP[severity - 1].string);
+ if (severity)
+ xmlNewProp(result_node, BAD_CAST "severity", BAD_CAST XCCDF_LEVEL_MAP[severity - 1].string);
const char *version = xccdf_rule_result_get_version(result);
if (version)
@@ -606,7 +608,8 @@ xmlNode *xccdf_rule_result_to_dom(struct xccdf_rule_result *result, xmlDoc *doc,
/* Handle children */
xccdf_test_result_type_t test_res = xccdf_rule_result_get_result(result);
- xmlNewChild(result_node, ns_xccdf, BAD_CAST "result", BAD_CAST XCCDF_RESULT_MAP[test_res - 1].string);
+ if (test_res)
+ xmlNewChild(result_node, ns_xccdf, BAD_CAST "result", BAD_CAST XCCDF_RESULT_MAP[test_res - 1].string);
struct xccdf_override_iterator *overrides = xccdf_rule_result_get_overrides(result);
while (xccdf_override_iterator_has_more(overrides)) {
@@ -627,7 +630,10 @@ xmlNode *xccdf_rule_result_to_dom(struct xccdf_rule_result *result, xmlDoc *doc,
struct xccdf_message *message = xccdf_message_iterator_next(messages);
const char *content = xccdf_message_get_content(message);
xmlNode *message_node = xmlNewChild(result_node, ns_xccdf, BAD_CAST "message", BAD_CAST content);
- xmlNewProp(message_node, BAD_CAST "severity", BAD_CAST XCCDF_LEVEL_MAP[severity - 1].string);
+
+ xccdf_level_t message_severity = xccdf_message_get_severity(result);
+ if (severity)
+ xmlNewProp(message_node, BAD_CAST "severity", BAD_CAST XCCDF_LEVEL_MAP[message_severity - 1].string);
}
xccdf_message_iterator_free(messages);
--
1.7.0.1
More information about the Open-scap-list
mailing list