コード例 #1
0
ファイル: oval_resultTest.c プロジェクト: swizzley/openscap
static void _oval_test_item_consumer(struct oval_result_item *item, void **args) {
	struct oval_sysitem *oval_sysitem = oval_result_item_get_sysitem(item);
	char *item_id = oval_sysitem_get_id(oval_sysitem);
	struct oval_result_item *mapped_item = oval_string_map_get_value(ITEMMAP, item_id);
	if (mapped_item == NULL) {
		oval_string_map_put(ITEMMAP, item_id, item);
		oval_result_test_add_item(TEST, item);
	} else {
		oval_result_item_free(item);
	}
}
コード例 #2
0
ファイル: oval_defModel.c プロジェクト: galaris/openscap
void oval_definition_model_optimize_by_filter_propagation(struct oval_definition_model *model)
{
	struct oval_object_iterator *obj_itr;
	struct oval_string_map *processed_obj_map;

	processed_obj_map = oval_string_map_new();

	obj_itr = oval_definition_model_get_objects(model);
	while (oval_object_iterator_has_more(obj_itr)) {
		struct oval_object *obj;
		char *obj_id;
		struct oval_object_content_iterator *cont_itr;
		struct oval_object_content *cont;
		struct oval_setobject *set;
		struct oval_filter_iterator *filter_itr;

		obj = oval_object_iterator_next(obj_itr);
		obj_id = oval_object_get_id(obj);
		if (oval_string_map_get_value(processed_obj_map, obj_id) != NULL)
			continue;

		oval_string_map_put(processed_obj_map, obj_id, obj);

		cont_itr = oval_object_get_object_contents(obj);
		if (!oval_object_content_iterator_has_more(cont_itr)) {
			oval_object_content_iterator_free(cont_itr);
			continue;
		}

		cont = oval_object_content_iterator_next(cont_itr);
		oval_object_content_iterator_free(cont_itr);
		if (oval_object_content_get_type(cont) != OVAL_OBJECTCONTENT_SET)
			continue;

		set = oval_object_content_get_setobject(cont);
		if (oval_setobject_get_type(set) == OVAL_SET_AGGREGATE) {
			_fp_set_recurse(model, set, obj_id);
			continue;
		}

		filter_itr = oval_setobject_get_filters(set);
		if (!oval_filter_iterator_has_more(filter_itr)) {
			oval_filter_iterator_free(filter_itr);
			continue;
		}
		oval_filter_iterator_free(filter_itr);

		oval_set_propagate_filters(model, set, obj_id);
	}
	oval_object_iterator_free(obj_itr);

	oval_string_map_free(processed_obj_map, NULL);
}
コード例 #3
0
void oval_string_map_put_string(struct oval_string_map *map, const char *key, const char *item)
{
	char *temp = (char *)oscap_alloc((strlen(item) + 1) * sizeof(char) + 1);
	char *useval = strcpy(temp, item);
	oval_string_map_put(map, key, useval);
}
コード例 #4
0
ファイル: oval_defModel.c プロジェクト: galaris/openscap
void oval_definition_model_add_variable(struct oval_definition_model *model, struct oval_variable *variable)
{
	__attribute__nonnull__(model);
	char *key = oval_variable_get_id(variable);
	oval_string_map_put(model->variable_map, key, (void *)variable);
}
コード例 #5
0
ファイル: oval_defModel.c プロジェクト: galaris/openscap
void oval_definition_model_add_state(struct oval_definition_model *model, struct oval_state *state)
{
	__attribute__nonnull__(model);
	char *key = oval_state_get_id(state);
	oval_string_map_put(model->state_map, key, (void *)state);
}
コード例 #6
0
ファイル: oval_defModel.c プロジェクト: galaris/openscap
void oval_definition_model_add_object(struct oval_definition_model *model, struct oval_object *object)
{
	__attribute__nonnull__(model);
	char *key = oval_object_get_id(object);
	oval_string_map_put(model->object_map, key, (void *)object);
}
コード例 #7
0
ファイル: oval_defModel.c プロジェクト: galaris/openscap
void oval_definition_model_add_test(struct oval_definition_model *model, struct oval_test *test)
{
	__attribute__nonnull__(model);
	char *key = oval_test_get_id(test);
	oval_string_map_put(model->test_map, key, (void *)test);
}
コード例 #8
0
ファイル: oval_defModel.c プロジェクト: galaris/openscap
void oval_definition_model_add_definition(struct oval_definition_model *model, struct oval_definition *definition)
{
	__attribute__nonnull__(model);
	char *key = oval_definition_get_id(definition);
	oval_string_map_put(model->definition_map, key, (void *)definition);
}