static void _syschar_add_bindings(struct oval_syschar *sc, struct oval_string_map *vm) { struct oval_iterator *var_itr; var_itr = oval_string_map_values(vm); while (oval_collection_iterator_has_more(var_itr)) { struct oval_variable *var; struct oval_value_iterator *val_itr; struct oval_variable_binding *binding; var = oval_collection_iterator_next(var_itr); binding = oval_variable_binding_new(var, NULL); val_itr = oval_variable_get_values(var); while (oval_value_iterator_has_more(val_itr)) { struct oval_value *val; char *txt; val = oval_value_iterator_next(val_itr); txt = oval_value_get_text(val); txt = oscap_strdup(txt); oval_variable_binding_add_value(binding, txt); } oval_value_iterator_free(val_itr); oval_syschar_add_variable_binding(sc, binding); } oval_collection_iterator_free(var_itr); }
struct oval_state_content *oval_state_content_iterator_next(struct oval_state_content_iterator *oc_state_content) { return (struct oval_state_content *) oval_collection_iterator_next((struct oval_iterator *) oc_state_content); }
static void _oval_result_test_initialize_bindings(struct oval_result_test *rslt_test) { __attribute__nonnull__(rslt_test); struct oval_test *oval_test = oval_result_test_get_test(rslt_test); struct oval_string_map *vm; struct oval_state_iterator *ste_itr; struct oval_iterator *var_itr; vm = oval_string_map_new(); /* Gather bindings pertaining to the referenced states */ /* TODO: cache bindings collected for each state */ ste_itr = oval_test_get_states(oval_test); while (oval_state_iterator_has_more(ste_itr)) { struct oval_state *ste; ste = oval_state_iterator_next(ste_itr); oval_ste_collect_var_refs(ste, vm); } oval_state_iterator_free(ste_itr); var_itr = oval_string_map_values(vm); while (oval_collection_iterator_has_more(var_itr)) { struct oval_variable *var; struct oval_value_iterator *val_itr; struct oval_variable_binding *binding; var = oval_collection_iterator_next(var_itr); binding = oval_variable_binding_new(var, NULL); val_itr = oval_variable_get_values(var); while (oval_value_iterator_has_more(val_itr)) { struct oval_value *val; char *txt; val = oval_value_iterator_next(val_itr); txt = oval_value_get_text(val); txt = oscap_strdup(txt); oval_variable_binding_add_value(binding, txt); } oval_value_iterator_free(val_itr); oval_result_test_add_binding(rslt_test, binding); } oval_collection_iterator_free(var_itr); /* Gather bindings pertaining to the collected object */ struct oval_object *oval_object = oval_test_get_object(oval_test); if (oval_object) { char *object_id = oval_object_get_id(oval_object); struct oval_result_system *sys = oval_result_test_get_system(rslt_test); struct oval_syschar_model *syschar_model = oval_result_system_get_syschar_model(sys); struct oval_syschar *syschar = oval_syschar_model_get_syschar(syschar_model, object_id); /* no syschar if system characteristics was a subset of definitions */ if(syschar) { struct oval_variable_binding_iterator *bindings = oval_syschar_get_variable_bindings(syschar); while (oval_variable_binding_iterator_has_more(bindings)) { struct oval_variable *var; char *var_id; struct oval_variable_binding *binding = oval_variable_binding_iterator_next(bindings); var = oval_variable_binding_get_variable(binding); var_id = oval_variable_get_id(var); /* Don't add bindings that were already * collected from states. Assumtion is made * that object's own bindings don't contain * duplicates. */ if (oval_string_map_get_value(vm, var_id) == NULL) { struct oval_definition_model *definition_model = oval_syschar_model_get_definition_model(syschar_model); struct oval_variable_binding *binding_copy = oval_variable_binding_clone(binding, definition_model); oval_result_test_add_binding(rslt_test, binding_copy); } } oval_variable_binding_iterator_free(bindings); } } oval_string_map_free(vm, NULL); rslt_test->bindings_initialized = true; }
struct oval_test *oval_test_iterator_next(struct oval_test_iterator *oc_test) { return (struct oval_test *) oval_collection_iterator_next((struct oval_iterator *)oc_test); }
struct oval_behavior *oval_behavior_iterator_next(struct oval_behavior_iterator *oc_behavior) { return (struct oval_behavior *) oval_collection_iterator_next((struct oval_iterator *)oc_behavior); }
struct oval_message *oval_message_iterator_next(struct oval_message_iterator *oc_message) { return (struct oval_message *) oval_collection_iterator_next((struct oval_iterator *)oc_message); }
struct oval_affected *oval_affected_iterator_next(struct oval_affected_iterator *oc_affected) { return (struct oval_affected *) oval_collection_iterator_next((struct oval_iterator *)oc_affected); }
char *oval_string_iterator_next(struct oval_string_iterator *iterator) { return (char *)oval_collection_iterator_next((struct oval_iterator *)iterator); }
struct oval_value *oval_value_iterator_next(struct oval_value_iterator *oc_value) { return (struct oval_value *) oval_collection_iterator_next((struct oval_iterator *)oc_value); }
struct oval_record_field *oval_record_field_iterator_next(struct oval_record_field_iterator *itr) { return (struct oval_record_field *) oval_collection_iterator_next((struct oval_iterator *) itr); }
struct oval_entity *oval_entity_iterator_next(struct oval_entity_iterator *oc_entity) { return (struct oval_entity *) oval_collection_iterator_next((struct oval_iterator *)oc_entity); }