android_system_sepolicy/tools/sepolicy-analyze/attribute.c
Stephen Smalley 0233cd800e sepolicy-analyze: Add attribute command.
Add an attribute command to sepolicy-analyze for displaying the list
of types associated with an attribute in a policy.  This is for use
by CTS to check what domains and types are associated with certain
attributes such as mlstrustedsubject and mlstrustedobject.

Change-Id: Ie19361c02feb1ad14ce36862c6aace9e66c422bb
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
2015-03-13 12:22:39 -04:00

40 lines
985 B
C

#include "attribute.h"
void attribute_usage() {
fprintf(stderr, "\tattribute <attribute-name>\n");
}
static int list_attribute(policydb_t * policydb, char *name)
{
struct type_datum *attr;
struct ebitmap_node *n;
unsigned int bit;
attr = hashtab_search(policydb->p_types.table, name);
if (!attr) {
fprintf(stderr, "%s is not defined in this policy.\n", name);
return -1;
}
if (attr->flavor != TYPE_ATTRIB) {
fprintf(stderr, "%s is a type not an attribute in this policy.\n", name);
return -1;
}
ebitmap_for_each_bit(&policydb->attr_type_map[attr->s.value - 1], n, bit) {
if (!ebitmap_node_get_bit(n, bit))
continue;
printf("%s\n", policydb->p_type_val_to_name[bit]);
}
return 0;
}
int attribute_func (int argc, char **argv, policydb_t *policydb) {
if (argc != 2) {
USAGE_ERROR = true;
return -1;
}
return list_attribute(policydb, argv[1]);
}