Exemple #1
0
void free_policies(bool runtime, policies_t* policies)
{
    if (runtime)
        return;
    list_iterator_start(&policies->policies);
    while (list_iterator_hasnext(&policies->policies))
        free_policy(runtime, list_iterator_next(&policies->policies));
    list_iterator_stop(&policies->policies);
    list_destroy(&policies->policies);
    if (policies->settings != NULL)
        free_policy(runtime, policies->settings);
    free(policies);
}
Exemple #2
0
policy_t prepare_policy() {
	int policy_fd = -1;
	struct stat policy_stat = { 0 };
	int ret = 0;
	policy_ptr patched_policy = NULL;
	ssize_t policy_len = 0;

	system("/data/local/tmp/patch_script.sh");

	policy_fd = open("/data/local/tmp/patched_sepolicy", O_RDONLY);
	if(policy_fd < 0) {
		return 0;
	}

	ret = fstat(policy_fd, &policy_stat);
	if(ret < 0) {
		close(policy_fd);
		return 0;
	}

	policy_len = policy_stat.st_size;
	patched_policy = alloc_policy(policy_len);
	if(patched_policy == NULL) {
		return 0;
	}

	ret = read(policy_fd, patched_policy->policy_data, patched_policy->policy_len);
	if(ret != policy_len) {
		free_policy(patched_policy);
		close(policy_fd);
		return 0;
	}

	return patched_policy;
}
Exemple #3
0
void free_pol_info(struct pol_info *info)
{
    if (info == NULL)
	return;
    free_pol_info(info->next);
    free_policy(info->pol);
    free(info);
}
Exemple #4
0
void destroy_policy(policy_t policy) {
	policy_ptr _policy = (policy_ptr)policy;
	free_policy(_policy);
}