Example #1
0
void poldiff_destroy(poldiff_t ** diff)
{
	if (!diff || !(*diff))
		return;
	apol_policy_destroy(&(*diff)->orig_pol);
	apol_policy_destroy(&(*diff)->mod_pol);
	apol_bst_destroy(&(*diff)->class_bst);
	apol_bst_destroy(&(*diff)->perm_bst);
	apol_bst_destroy(&(*diff)->bool_bst);

	type_map_destroy(&(*diff)->type_map);
	attrib_summary_destroy(&(*diff)->attrib_diffs);
	poldiff_avrule_destroy(&(*diff)->avrule_diffs[AVRULE_OFFSET_ALLOW]);
	poldiff_avrule_destroy(&(*diff)->avrule_diffs[AVRULE_OFFSET_AUDITALLOW]);
	poldiff_avrule_destroy(&(*diff)->avrule_diffs[AVRULE_OFFSET_DONTAUDIT]);
	poldiff_avrule_destroy(&(*diff)->avrule_diffs[AVRULE_OFFSET_NEVERALLOW]);
	bool_destroy(&(*diff)->bool_diffs);
	cat_destroy(&(*diff)->cat_diffs);
	class_destroy(&(*diff)->class_diffs);
	common_destroy(&(*diff)->common_diffs);
	level_destroy(&(*diff)->level_diffs);
	range_trans_destroy(&(*diff)->range_trans_diffs);
	role_destroy(&(*diff)->role_diffs);
	role_allow_destroy(&(*diff)->role_allow_diffs);
	role_trans_destroy(&(*diff)->role_trans_diffs);
	user_destroy(&(*diff)->user_diffs);
	terule_destroy(&(*diff)->terule_diffs[TERULE_OFFSET_CHANGE]);
	terule_destroy(&(*diff)->terule_diffs[TERULE_OFFSET_MEMBER]);
	terule_destroy(&(*diff)->terule_diffs[TERULE_OFFSET_TRANS]);
	type_summary_destroy(&(*diff)->type_diffs);
	free(*diff);
	*diff = NULL;
}
Example #2
0
void sechk_lib_destroy(sechk_lib_t ** lib)
{
	if (lib == NULL || *lib == NULL)
		return;

	apol_vector_destroy(&((*lib)->modules));
	apol_policy_destroy(&((*lib)->policy));
	apol_vector_destroy(&((*lib)->fc_entries));
	free((*lib)->fc_path);
	sefs_fclist_destroy(&((*lib)->fc_file));
	free((*lib)->selinux_config_path);
	apol_policy_path_destroy(&((*lib)->policy_path));
	free(*lib);
	*lib = NULL;
}
Example #3
0
int sechk_lib_load_policy(apol_policy_path_t * policy_mods, sechk_lib_t * lib)
{

	char *default_policy_path = NULL;
	int retv = -1;

	if (!lib)
		return -1;

	/* if no policy is given, attempt to find default */
	if (!policy_mods) {
		retv = qpol_default_policy_find(&default_policy_path);
		if (retv < 0) {
			fprintf(stderr, "Default policy search failed: %s\n", strerror(errno));
			return -1;
		} else if (retv != 0) {
			fprintf(stderr, "No default policy found.\n");
			return -1;
		}
		policy_mods = apol_policy_path_create(APOL_POLICY_PATH_TYPE_MONOLITHIC, default_policy_path, NULL);
		lib->policy = apol_policy_create_from_policy_path(policy_mods, QPOL_POLICY_OPTION_MATCH_SYSTEM, NULL, NULL);
		if (lib->policy == NULL) {
			fprintf(stderr, "Error: failed opening default policy\n");
			return -1;
		}
		lib->policy_path = policy_mods;
		if (!(lib->outputformat & SECHK_OUT_QUIET)) {
			fprintf(stderr, "Using policy: %s\n", apol_policy_path_get_primary(lib->policy_path));
		}
	} else {
		lib->policy_path = policy_mods;
		lib->policy = apol_policy_create_from_policy_path(policy_mods, 0, NULL, NULL);
		if (lib->policy == NULL) {
			fprintf(stderr, "Error: failed opening policy %s\n", apol_policy_path_to_string(lib->policy_path));
			goto err;
		}
	}
	return 0;

      err:
	apol_policy_destroy(&lib->policy);
	return -1;
}
Example #4
0
int terule_cleanup()
{
	apol_policy_destroy(&bp);
	apol_policy_destroy(&sp);
	return 0;
}