void oval_definition_model_clear_external_variables(struct oval_definition_model *model) { struct oval_variable_iterator *vars_itr; vars_itr = oval_definition_model_get_variables(model); while (oval_variable_iterator_has_more(vars_itr)) { struct oval_variable *var; var = oval_variable_iterator_next(vars_itr); if (oval_variable_get_type(var) != OVAL_VARIABLE_EXTERNAL) continue; oval_variable_clear_values(var); } oval_variable_iterator_free(vars_itr); }
static int oval_probe_query_var_ref(oval_probe_session_t *sess, struct oval_state *state) { struct oval_state_content_iterator *contents = oval_state_get_contents(state); while (oval_state_content_iterator_has_more(contents)) { struct oval_state_content *content = oval_state_content_iterator_next(contents); struct oval_entity * entity = oval_state_content_get_entity(content); if (oval_entity_get_varref_type(entity) == OVAL_ENTITY_VARREF_ATTRIBUTE) { oval_syschar_collection_flag_t flag; struct oval_variable *var = oval_entity_get_variable(entity); const char *state_id = oval_state_get_id(state); oval_variable_type_t var_type = oval_variable_get_type(var); const char *var_type_text = oval_variable_type_get_text(var_type); const char *var_id = oval_variable_get_id(var); dI("State '%s' references %s '%s'.", state_id, var_type_text, var_id); int ret = oval_probe_query_variable(sess, var); if (ret == -1) { oval_state_content_iterator_free(contents); return ret; } flag = oval_variable_get_collection_flag(var); switch (flag) { case SYSCHAR_FLAG_COMPLETE: case SYSCHAR_FLAG_INCOMPLETE: break; default: oval_state_content_iterator_free(contents); return 0; } } } oval_state_content_iterator_free(contents); return 1; }