Lines Matching defs:datum
150 * 1: Success - Symbol had already been created and caller must free datum.
155 static int create_symbol(uint32_t symbol_type, hashtab_key_t key, hashtab_datum_t datum,
165 ret = symtab_insert(policydbp, symbol_type, key, datum, scope,
192 * such return 1 to indicate that caller must free() the datum because
198 hashtab_key_t key, hashtab_datum_t datum,
202 int ret = create_symbol(symbol_type, key, datum, dest_value, SCOPE_DECL);
256 role_datum_t *datum = NULL;
269 datum = malloc(sizeof(*datum));
270 if (datum == NULL) {
276 role_datum_init(datum);
277 datum->flavor = isattr;
280 ret = declare_symbol(SYM_ROLES, id, datum, &value, &value);
282 ret = require_symbol(SYM_ROLES, id, datum, &value, &value);
285 datum->s.value = value;
288 *role = datum;
300 role_datum_destroy(datum);
301 free(datum);
304 *role = datum;
309 role_datum_destroy(datum);
310 free(datum);
391 type_datum_t *datum;
409 datum = malloc(sizeof(*datum));
410 if (!datum) {
415 type_datum_init(datum);
416 datum->primary = 1;
417 datum->flavor = isattr;
420 ret = declare_symbol(SYM_TYPES, id, datum, &value, &value);
422 ret = require_symbol(SYM_TYPES, id, datum, &value, &value);
426 datum->s.value = value;
427 *type = datum;
429 type_datum_destroy(datum);
430 free(datum);
442 type_datum_destroy(datum);
443 free(datum);
501 user_datum_t *datum = NULL;
513 datum = malloc(sizeof(*datum));
514 if (datum == NULL) {
520 user_datum_init(datum);
523 ret = declare_symbol(SYM_USERS, id, datum, &value, &value);
525 ret = require_symbol(SYM_USERS, id, datum, &value, &value);
528 datum->s.value = value;
531 *user = datum;
538 *user = datum;
543 user_datum_destroy(datum);
544 free(datum);
711 * datum. If symbols may not be declared here return -1. For duplicate
717 hashtab_key_t key, hashtab_datum_t datum,
721 int ret = create_symbol(symbol_type, key, datum, dest_value, SCOPE_REQ);
764 static int perm_destroy(hashtab_key_t key, hashtab_datum_t datum, void *p
769 free(datum);
786 class_datum_t *datum = NULL;
803 if ((datum = calloc(1, sizeof(*datum))) == NULL ||
804 symtab_init(&datum->permissions, PERM_SYMTAB_SIZE)) {
806 class_datum_destroy(datum);
810 require_symbol(SYM_CLASSES, class_id, datum, &datum->s.value,
811 &datum->s.value);
815 class_datum_destroy(datum);
826 class_datum_destroy(datum);
827 datum = hashtab_search(policydbp->p_classes.table, class_id);
828 assert(datum); /* the class datum should have existed */
837 perm = hashtab_search(datum->permissions.table, perm_id);
838 if (!perm && datum->comdatum)
840 hashtab_search(datum->comdatum->permissions.table,
854 if (datum->permissions.nprim >= PERM_SYMTAB_SIZE) {
857 policydbp->p_class_val_to_name[datum->s.value - 1],
870 hashtab_insert(datum->permissions.table, perm_id,
878 perm->s.value = datum->permissions.nprim + 1;
881 if (add_perm_to_class(perm->s.value, datum->s.value) == -1) {
888 datum->permissions.nprim++;