oval_test.c | oval_test.c | |||
---|---|---|---|---|
skipping to change at line 332 | skipping to change at line 332 | |||
{ | { | |||
struct oval_test *test = (struct oval_test *)user; | struct oval_test *test = (struct oval_test *)user; | |||
char *tagname = (char *)xmlTextReaderLocalName(reader); | char *tagname = (char *)xmlTextReaderLocalName(reader); | |||
int return_code = 0; | int return_code = 0; | |||
if ((strcmp(tagname, "notes") == 0)) { | if ((strcmp(tagname, "notes") == 0)) { | |||
return_code = oval_parser_parse_tag(reader, context, &_oval_ test_parse_notes, test); | return_code = oval_parser_parse_tag(reader, context, &_oval_ test_parse_notes, test); | |||
} else if ((strcmp(tagname, "object") == 0)) { | } else if ((strcmp(tagname, "object") == 0)) { | |||
char *object_ref = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "object_ref"); | char *object_ref = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "object_ref"); | |||
if (object_ref != NULL) { | if (object_ref != NULL) { | |||
struct oval_definition_model *model = context->defin ition_model; | struct oval_definition_model *model = context->defin ition_model; | |||
struct oval_object *object = oval_object_get_new(mod el, object_ref); | struct oval_object *object = oval_definition_model_g et_new_object(model, object_ref); | |||
oscap_free(object_ref); | oscap_free(object_ref); | |||
object_ref = NULL; | object_ref = NULL; | |||
oval_test_set_object(test, object); | oval_test_set_object(test, object); | |||
} | } | |||
} else if ((strcmp(tagname, "state") == 0)) { | } else if ((strcmp(tagname, "state") == 0)) { | |||
char *state_ref = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "state_ref"); | char *state_ref = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "state_ref"); | |||
if (state_ref != NULL) { | if (state_ref != NULL) { | |||
struct oval_definition_model *model = context->defin ition_model; | struct oval_definition_model *model = context->defin ition_model; | |||
struct oval_state *state = oval_state_get_new(model, state_ref); | struct oval_state *state = oval_definition_model_get _new_state(model, state_ref); | |||
oval_test_add_state(test, state); | oval_test_add_state(test, state); | |||
oscap_free(state_ref); | oscap_free(state_ref); | |||
state_ref = NULL; | state_ref = NULL; | |||
} | } | |||
} else { | } else { | |||
oscap_dlprintf(DBG_W, "Skipping tag <%s>.\n", tagname); | oscap_dlprintf(DBG_W, "Skipping tag <%s>.\n", tagname); | |||
return_code = oval_parser_skip_tag(reader, context); | return_code = oval_parser_skip_tag(reader, context); | |||
} | } | |||
oscap_free(tagname); | oscap_free(tagname); | |||
skipping to change at line 364 | skipping to change at line 364 | |||
} | } | |||
int oval_test_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *usr) | int oval_test_parse_tag(xmlTextReaderPtr reader, struct oval_parser_context *context, void *usr) | |||
{ | { | |||
int ret = 0; | int ret = 0; | |||
char *comm = NULL; | char *comm = NULL; | |||
char *version = NULL; | char *version = NULL; | |||
struct oval_definition_model *model = context->definition_model; | struct oval_definition_model *model = context->definition_model; | |||
char *id = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "id"); | char *id = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "id"); | |||
struct oval_test *test = oval_test_get_new(model, id); | struct oval_test *test = oval_definition_model_get_new_test(model, i d); | |||
oval_subtype_t subtype = oval_subtype_parse(reader); | oval_subtype_t subtype = oval_subtype_parse(reader); | |||
if ( subtype == OVAL_SUBTYPE_UNKNOWN) { | if ( subtype == OVAL_SUBTYPE_UNKNOWN) { | |||
oscap_dlprintf(DBG_E, "Unknown test %s.\n", id); | oscap_dlprintf(DBG_E, "Unknown test %s.\n", id); | |||
ret = -1; | ret = -1; | |||
goto cleanup; | goto cleanup; | |||
} | } | |||
oval_test_set_subtype(test, subtype); | oval_test_set_subtype(test, subtype); | |||
oval_existence_t existence = oval_existence_parse(reader, "check_exi | ||||
stence", OVAL_AT_LEAST_ONE_EXISTS); | ||||
oval_test_set_existence(test, existence); | ||||
oval_operator_t ste_operator = oval_operator_parse(reader, "state_op erator", OVAL_OPERATOR_AND); | oval_operator_t ste_operator = oval_operator_parse(reader, "state_op erator", OVAL_OPERATOR_AND); | |||
oval_test_set_state_operator(test, ste_operator); | oval_test_set_state_operator(test, ste_operator); | |||
oval_check_t check = oval_check_parse(reader, "check", OVAL_CHECK_UN KNOWN); | oval_check_t check = oval_check_parse(reader, "check", OVAL_CHECK_UN KNOWN); | |||
oval_test_set_check(test, check); | if (check == OVAL_CHECK_NONE_EXIST) { | |||
dW("The 'none exist' CheckEnumeration value has been depreca | ||||
ted. " | ||||
"Converted to check='none satisfy' and check_existence='n | ||||
one exist'.\n"); | ||||
oval_test_set_check(test, OVAL_CHECK_NONE_SATISFY); | ||||
oval_test_set_existence(test, OVAL_NONE_EXIST); | ||||
} else { | ||||
oval_existence_t existence; | ||||
oval_test_set_check(test, check); | ||||
existence = oval_existence_parse(reader, "check_existence", | ||||
OVAL_AT_LEAST_ONE_EXISTS); | ||||
oval_test_set_existence(test, existence); | ||||
} | ||||
comm = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "comment") ; | comm = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "comment") ; | |||
if (comm != NULL) { | if (comm != NULL) { | |||
oval_test_set_comment(test, comm); | oval_test_set_comment(test, comm); | |||
} | } | |||
int deprecated = oval_parser_boolean_attribute(reader, "deprecated", 0); | int deprecated = oval_parser_boolean_attribute(reader, "deprecated", 0); | |||
oval_test_set_deprecated(test, deprecated); | oval_test_set_deprecated(test, deprecated); | |||
version = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "versio n"); | version = (char *)xmlTextReaderGetAttribute(reader, BAD_CAST "versio n"); | |||
skipping to change at line 414 | skipping to change at line 422 | |||
{ | { | |||
xmlNode * test_node=NULL; | xmlNode * test_node=NULL; | |||
/* skip unknown test */ | /* skip unknown test */ | |||
oval_subtype_t subtype = oval_test_get_subtype(test); | oval_subtype_t subtype = oval_test_get_subtype(test); | |||
if ( subtype == OVAL_SUBTYPE_UNKNOWN ) { | if ( subtype == OVAL_SUBTYPE_UNKNOWN ) { | |||
oscap_dlprintf(DBG_E, "Unknown Test %s.\n", oval_test_get_id (test)); | oscap_dlprintf(DBG_E, "Unknown Test %s.\n", oval_test_get_id (test)); | |||
return test_node; | return test_node; | |||
} | } | |||
struct oval_state_iterator *ste_itr; | /* get test name */ | |||
const char *subtype_text = oval_subtype_get_text(subtype); | const char *subtype_text = oval_subtype_get_text(subtype); | |||
char test_name[strlen(subtype_text) + 6]; | char test_name[strlen(subtype_text) + 6]; | |||
*test_name = '\0'; | sprintf(test_name, "%s_test", subtype_text); | |||
strcat(strcat(test_name, subtype_text), "_test"); | ||||
test_node = xmlNewTextChild(parent, NULL, BAD_CAST test_name, NULL); | ||||
/* get family URI */ | ||||
oval_family_t family = oval_test_get_family(test); | oval_family_t family = oval_test_get_family(test); | |||
const char *family_text = oval_family_get_text(family); | const char *family_text = oval_family_get_text(family); | |||
char family_uri[strlen((const char *)OVAL_DEFINITIONS_NAMESPACE) + s trlen(family_text) + 2]; | char family_uri[strlen((const char *)OVAL_DEFINITIONS_NAMESPACE) + s trlen(family_text) + 2]; | |||
*family_uri = '\0'; | sprintf(family_uri,"%s#%s", OVAL_DEFINITIONS_NAMESPACE, family_text) | |||
strcat(strcat(strcat(family_uri, (const char *)OVAL_DEFINITIONS_NAME | ; | |||
SPACE), "#"), family_text); | ||||
xmlNs *ns_family = xmlNewNs(test_node, BAD_CAST family_uri, NULL); | ||||
xmlSetNs(test_node, ns_family); | /* search namespace & create child */ | |||
xmlNs *ns_family = xmlSearchNsByHref(doc, parent, BAD_CAST family_ur | ||||
i); | ||||
test_node = xmlNewTextChild(parent, ns_family, BAD_CAST test_name, N | ||||
ULL); | ||||
char *id = oval_test_get_id(test); | char *id = oval_test_get_id(test); | |||
xmlNewProp(test_node, BAD_CAST "id", BAD_CAST id); | xmlNewProp(test_node, BAD_CAST "id", BAD_CAST id); | |||
char version[10]; | char version[10]; | |||
*version = '\0'; | *version = '\0'; | |||
snprintf(version, sizeof(version), "%d", oval_test_get_version(test) ); | snprintf(version, sizeof(version), "%d", oval_test_get_version(test) ); | |||
xmlNewProp(test_node, BAD_CAST "version", BAD_CAST version); | xmlNewProp(test_node, BAD_CAST "version", BAD_CAST version); | |||
oval_existence_t existence = oval_test_get_existence(test); | oval_existence_t existence = oval_test_get_existence(test); | |||
skipping to change at line 473 | skipping to change at line 480 | |||
} | } | |||
} | } | |||
oval_string_iterator_free(notes); | oval_string_iterator_free(notes); | |||
struct oval_object *object = oval_test_get_object(test); | struct oval_object *object = oval_test_get_object(test); | |||
if (object) { | if (object) { | |||
xmlNode *object_node = xmlNewTextChild(test_node, ns_family, BAD_CAST "object", NULL); | xmlNode *object_node = xmlNewTextChild(test_node, ns_family, BAD_CAST "object", NULL); | |||
xmlNewProp(object_node, BAD_CAST "object_ref", BAD_CAST oval _object_get_id(object)); | xmlNewProp(object_node, BAD_CAST "object_ref", BAD_CAST oval _object_get_id(object)); | |||
} | } | |||
ste_itr = oval_test_get_states(test); | struct oval_state_iterator *ste_itr = oval_test_get_states(test); | |||
while (oval_state_iterator_has_more(ste_itr)) { | while (oval_state_iterator_has_more(ste_itr)) { | |||
struct oval_state *state; | struct oval_state *state; | |||
state = oval_state_iterator_next(ste_itr); | state = oval_state_iterator_next(ste_itr); | |||
xmlNode *state_node = xmlNewTextChild(test_node, ns_family, BAD_CAST "state", NULL); | xmlNode *state_node = xmlNewTextChild(test_node, ns_family, BAD_CAST "state", NULL); | |||
xmlNewProp(state_node, BAD_CAST "state_ref", BAD_CAST oval_s tate_get_id(state)); | xmlNewProp(state_node, BAD_CAST "state_ref", BAD_CAST oval_s tate_get_id(state)); | |||
} | } | |||
oval_state_iterator_free(ste_itr); | oval_state_iterator_free(ste_itr); | |||
return test_node; | return test_node; | |||
End of changes. 11 change blocks. | ||||
18 lines changed or deleted | 29 lines changed or added | |||
This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |