コード例 #1
0
ファイル: dispol.c プロジェクト: 10114395/android-5.0.0_r5
int display_avtab(avtab_t * a, uint32_t what, policydb_t * p, FILE * fp)
{
	unsigned int i;
	avtab_ptr_t cur;
	avtab_t expa;

	if (avtab_init(&expa))
		goto oom;
	if (expand_avtab(p, a, &expa)) {
		avtab_destroy(&expa);
		goto oom;
	}

	/* hmm...should have used avtab_map. */
	for (i = 0; i < expa.nslot; i++) {
		for (cur = expa.htable[i]; cur; cur = cur->next) {
			render_av_rule(&cur->key, &cur->datum, what, p, fp);
		}
	}
	avtab_destroy(&expa);
	fprintf(fp, "\n");
	return 0;
      oom:
	fprintf(stderr, "out of memory\n");
	return 1;
}
コード例 #2
0
ファイル: dispol.c プロジェクト: 10114395/android-5.0.0_r5
int display_cond_expressions(policydb_t * p, FILE * fp)
{
	cond_node_t *cur;
	cond_av_list_t *av_cur, *expl = NULL;
	avtab_t expa;

	for (cur = p->cond_list; cur != NULL; cur = cur->next) {
		fprintf(fp, "expression: ");
		display_expr(p, cur->expr, fp);
		fprintf(fp, "current state: %d\n", cur->cur_state);
		fprintf(fp, "True list:\n");
		if (avtab_init(&expa))
			goto oom;
		if (expand_cond_av_list(p, cur->true_list, &expl, &expa)) {
			avtab_destroy(&expa);
			goto oom;
		}
		for (av_cur = expl; av_cur != NULL; av_cur = av_cur->next) {
			fprintf(fp, "\t");
			render_av_rule(&av_cur->node->key, &av_cur->node->datum,
				       RENDER_CONDITIONAL, p, fp);
		}
		cond_av_list_destroy(expl);
		avtab_destroy(&expa);
		fprintf(fp, "False list:\n");
		if (avtab_init(&expa))
			goto oom;
		if (expand_cond_av_list(p, cur->false_list, &expl, &expa)) {
			avtab_destroy(&expa);
			goto oom;
		}
		for (av_cur = expl; av_cur != NULL; av_cur = av_cur->next) {
			fprintf(fp, "\t");
			render_av_rule(&av_cur->node->key, &av_cur->node->datum,
				       RENDER_CONDITIONAL, p, fp);
		}
		cond_av_list_destroy(expl);
		avtab_destroy(&expa);
	}
	return 0;

      oom:
	fprintf(stderr, "out of memory\n");
	return 1;
}
コード例 #3
0
ファイル: dispol.c プロジェクト: ctheanh/X3c50
int display_avtab(avtab_t * a, uint32_t what, policydb_t * p, FILE * fp)
{
	unsigned int i;
	avtab_ptr_t cur;

	/* hmm...should have used avtab_map. */
	for (i = 0; i < a->nslot; i++) {
		for (cur = a->htable[i]; cur; cur = cur->next) {
			render_av_rule(&cur->key, &cur->datum, what, p, fp);
		}
	}
	fprintf(fp, "\n");
	return 0;
}
コード例 #4
0
ファイル: dispol.c プロジェクト: ctheanh/X3c50
int display_cond_expressions(policydb_t * p, FILE * fp)
{
	cond_node_t *cur;
	cond_av_list_t *av_cur;

	for (cur = p->cond_list; cur != NULL; cur = cur->next) {
		fprintf(fp, "expression: ");
		display_expr(p, cur->expr, fp);
		fprintf(fp, "current state: %d\n", cur->cur_state);
		fprintf(fp, "True list:\n");
		for (av_cur = cur->true_list; av_cur != NULL; av_cur = av_cur->next) {
			fprintf(fp, "\t");
			render_av_rule(&av_cur->node->key, &av_cur->node->datum,
				       RENDER_CONDITIONAL, p, fp);
		}
		fprintf(fp, "False list:\n");
		for (av_cur = cur->false_list; av_cur != NULL; av_cur = av_cur->next) {
			fprintf(fp, "\t");
			render_av_rule(&av_cur->node->key, &av_cur->node->datum,
				       RENDER_CONDITIONAL, p, fp);
		}
	}
	return 0;
}