1b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_internal.h" 3b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_log.h" 4b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_list.h" 5b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "cil_symtab.h" 6b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 7b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_classperms_list(struct cil_list *cp_list); 8b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_level(struct cil_level *level); 9b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_levelrange(struct cil_levelrange *levelrange); 10b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_context(struct cil_context *context); 11b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 12b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 13b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic int __class_reset_perm_values(__attribute__((unused)) hashtab_key_t k, hashtab_datum_t d, void *args) 14b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 15b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_perm *perm = (struct cil_perm *)d; 16b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 17b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence perm->value -= *((int *)args); 18b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 19b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence return SEPOL_OK; 20b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 21b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 22b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_class(struct cil_class *class) 23b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 24b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence if (class->common != NULL) { 25b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *common = class->common; 264df9f89cb1182f0dd324e271109efd7e2eda467bSteve Lawrence cil_symtab_map(&class->perms, __class_reset_perm_values, &common->num_perms); 27b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* during a re-resolve, we need to reset the common, so a classcommon 28b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * statement isn't seen as a duplicate */ 29b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence class->num_perms -= common->num_perms; 30a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence class->common = NULL; /* Must make this NULL or there will be an error when re-resolving */ 31b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 32b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence class->ordered = CIL_FALSE; 33b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 34b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 35b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_perm(struct cil_perm *perm) 36b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 37b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classperms_list(perm->classperms); 38b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 39b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 40b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_classperms(struct cil_classperms *cp) 41b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 42b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence if (cp == NULL) { 43b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence return; 44b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 45b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 46b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&cp->perms, CIL_FALSE); 47b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 48b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 4976ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrencestatic void cil_reset_classpermission(struct cil_classpermission *cp) 5076ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence{ 5176ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence if (cp == NULL) { 5276ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence return; 5376ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence } 5476ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence 5576ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence cil_reset_classperms_list(cp->classperms); 5676ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence} 5776ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence 5876ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrencestatic void cil_reset_classperms_set(struct cil_classperms_set *cp_set) 5976ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence{ 6076ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence cil_reset_classpermission(cp_set->set); 6176ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence} 6276ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence 63b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_classperms_list(struct cil_list *cp_list) 64b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 65b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list_item *curr; 66b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 67b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence if (cp_list == NULL) { 68b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence return; 69b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 70b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 71b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_for_each(curr, cp_list) { 7276ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence if (curr->flavor == CIL_CLASSPERMS) { /* KERNEL or MAP */ 73b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classperms(curr->data); 7476ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence } else if (curr->flavor == CIL_CLASSPERMS_SET) { /* SET */ 7576ba6eaa7333483a8cc0c73a7880f7acf99c2656Steve Lawrence cil_reset_classperms_set(curr->data); 76b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 77b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 78b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 79b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 80b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_classpermissionset(struct cil_classpermissionset *cps) 81b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 82b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classperms_list(cps->classperms); 83b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 84b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 85b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_classmapping(struct cil_classmapping *cm) 86b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 87b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classperms_list(cm->classperms); 88b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 89b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 90b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_alias(struct cil_alias *alias) 91b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 92b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* reset actual to NULL during a re-resolve */ 93b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence alias->actual = NULL; 94b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 95b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 96b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_user(struct cil_user *user) 97b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 98b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* reset the bounds to NULL during a re-resolve */ 99b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence user->bounds = NULL; 100a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence user->dftlevel = NULL; 101a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence user->range = NULL; 10277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy} 10377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy 10477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiystatic void cil_reset_userattr(struct cil_userattribute *attr) 10577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy{ 10677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy struct cil_list_item *expr = NULL; 10777779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy struct cil_list_item *next = NULL; 10877779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy 10977779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy /* during a re-resolve, we need to reset the lists of expression stacks associated with this attribute from a userattribute statement */ 11077779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy if (attr->expr_list != NULL) { 11177779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy /* we don't want to destroy the expression stacks (cil_list) inside 11277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy * this list cil_list_destroy destroys sublists, so we need to do it 11377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy * manually */ 11477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy expr = attr->expr_list->head; 11577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy while (expr != NULL) { 11677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy next = expr->next; 11777779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy cil_list_item_destroy(&expr, CIL_FALSE); 11877779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy expr = next; 11977779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy } 12077779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy free(attr->expr_list); 12177779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy attr->expr_list = NULL; 12277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy } 12377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy} 12477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy 12577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiystatic void cil_reset_userattributeset(struct cil_userattributeset *uas) 12677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy{ 12777779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy cil_list_destroy(&uas->datum_expr, CIL_FALSE); 128b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 129b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 130b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_selinuxuser(struct cil_selinuxuser *selinuxuser) 131b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 132a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (selinuxuser->range_str == NULL) { 133a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_levelrange(selinuxuser->range); 134a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 135b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 136b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 137b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_role(struct cil_role *role) 138b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 139b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* reset the bounds to NULL during a re-resolve */ 140b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence role->bounds = NULL; 141b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 142b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 143b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_roleattr(struct cil_roleattribute *attr) 144b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 145b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* during a re-resolve, we need to reset the lists of expression stacks associated with this attribute from a attributeroles statement */ 146b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence if (attr->expr_list != NULL) { 147b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* we don't want to destroy the expression stacks (cil_list) inside 148b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * this list cil_list_destroy destroys sublists, so we need to do it 149b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * manually */ 150b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list_item *expr = attr->expr_list->head; 151b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence while (expr != NULL) { 152b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list_item *next = expr->next; 153b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_item_destroy(&expr, CIL_FALSE); 154b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence expr = next; 155b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 156b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence free(attr->expr_list); 157b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence attr->expr_list = NULL; 158b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 159b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 160b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 161b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_roleattributeset(struct cil_roleattributeset *ras) 162b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 163b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&ras->datum_expr, CIL_FALSE); 164b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 165b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 166b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_type(struct cil_type *type) 167b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 168b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* reset the bounds to NULL during a re-resolve */ 169b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence type->bounds = NULL; 170b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 171b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 172b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_typeattr(struct cil_typeattribute *attr) 173b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 174b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* during a re-resolve, we need to reset the lists of expression stacks associated with this attribute from a attributetypes statement */ 175b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence if (attr->expr_list != NULL) { 176b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* we don't want to destroy the expression stacks (cil_list) inside 177b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * this list cil_list_destroy destroys sublists, so we need to do it 178b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * manually */ 179b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list_item *expr = attr->expr_list->head; 180b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence while (expr != NULL) { 181b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list_item *next = expr->next; 182b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_item_destroy(&expr, CIL_FALSE); 183b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence expr = next; 184b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 185b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence free(attr->expr_list); 186b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence attr->expr_list = NULL; 187b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 188b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence attr->used = CIL_FALSE; 189b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 190b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 191b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_typeattributeset(struct cil_typeattributeset *tas) 192b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 193b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&tas->datum_expr, CIL_FALSE); 194b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 195b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 196b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_avrule(struct cil_avrule *rule) 197b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 198f5602f5ff980435ee2aefed35ba643310ceeac25Steve Lawrence cil_reset_classperms_list(rule->perms.classperms); 199b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 200b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 201b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_rangetransition(struct cil_rangetransition *rangetrans) 202b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 203a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (rangetrans->range_str == NULL) { 204a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_levelrange(rangetrans->range); 205a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 206b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 207b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 208b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_sens(struct cil_sens *sens) 209b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 210b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* during a re-resolve, we need to reset the categories associated with 211b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * this sensitivity from a (sensitivitycategory) statement */ 212b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&sens->cats_list, CIL_FALSE); 213b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence sens->ordered = CIL_FALSE; 214b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 215b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 216b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_cat(struct cil_cat *cat) 217b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 218b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cat->ordered = CIL_FALSE; 219b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 220b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 221b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_cats(struct cil_cats *cats) 222b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 223b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence if (cats != NULL) { 224b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cats->evaluated = CIL_FALSE; 225b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&cats->datum_expr, CIL_FALSE); 226b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 227b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 228b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 229b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 230b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_senscat(struct cil_senscat *senscat) 231b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 232b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_cats(senscat->cats); 233b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 234b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 235b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_catset(struct cil_catset *catset) 236b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 237b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_cats(catset->cats); 238b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 239b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 240b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_level(struct cil_level *level) 241b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 242b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_cats(level->cats); 243b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 244b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 245b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_levelrange(struct cil_levelrange *levelrange) 246b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 247a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (levelrange->low_str == NULL) { 248a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_level(levelrange->low); 249a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 250a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence 251a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (levelrange->high_str == NULL) { 252a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_level(levelrange->high); 253a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 254a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence} 255a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence 256a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrencestatic inline void cil_reset_userlevel(struct cil_userlevel *userlevel) 257a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence{ 258a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (userlevel->level_str == NULL) { 259a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_level(userlevel->level); 260a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 261a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence} 262a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence 263a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrencestatic inline void cil_reset_userrange(struct cil_userrange *userrange) 264a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence{ 265a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (userrange->range_str == NULL) { 266a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_levelrange(userrange->range); 267a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 268b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 269b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 270b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic inline void cil_reset_context(struct cil_context *context) 271b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 272a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (context->range_str == NULL) { 273a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_levelrange(context->range); 274a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 275b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 276b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 277b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_sidcontext(struct cil_sidcontext *sidcontext) 278b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 279a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (sidcontext->context_str == NULL) { 280a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(sidcontext->context); 281a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 282b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 283b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 284b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_filecon(struct cil_filecon *filecon) 285b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 286a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (filecon->context_str == NULL && filecon->context != NULL) { 287b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_context(filecon->context); 288b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 289b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 290b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 291b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_portcon(struct cil_portcon *portcon) 292b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 293a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (portcon->context_str == NULL) { 294a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(portcon->context); 295a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 296b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 297b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 298b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_nodecon(struct cil_nodecon *nodecon) 299b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 300a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (nodecon->context_str == NULL) { 301a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(nodecon->context); 302a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 303b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 304b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 305b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_genfscon(struct cil_genfscon *genfscon) 306b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 307a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (genfscon->context_str == NULL) { 308a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(genfscon->context); 309a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 310b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 311b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 312b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_netifcon(struct cil_netifcon *netifcon) 313b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 314a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (netifcon->if_context_str == NULL) { 315a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(netifcon->if_context); 316a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 317a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence 318a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (netifcon->packet_context_str == NULL) { 319a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(netifcon->packet_context); 320a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 321b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 322b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 323b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_pirqcon(struct cil_pirqcon *pirqcon) 324b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 325a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (pirqcon->context_str == NULL) { 326a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(pirqcon->context); 327a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 328b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 329b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 330b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_iomemcon(struct cil_iomemcon *iomemcon) 331b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 332a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (iomemcon->context_str == NULL) { 333a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(iomemcon->context); 334a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 335b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 336b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 337b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_ioportcon(struct cil_ioportcon *ioportcon) 338b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 339a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (ioportcon->context_str == NULL) { 340a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(ioportcon->context); 341a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 342b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 343b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 344b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_pcidevicecon(struct cil_pcidevicecon *pcidevicecon) 345b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 346a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (pcidevicecon->context_str == NULL) { 347a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(pcidevicecon->context); 348a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 349b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 350b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 351f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graafstatic void cil_reset_devicetreecon(struct cil_devicetreecon *devicetreecon) 352f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf{ 353f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf if (devicetreecon->context_str == NULL) { 354f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf cil_reset_context(devicetreecon->context); 355f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf } 356f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf} 357f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf 358b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_fsuse(struct cil_fsuse *fsuse) 359b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 360a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence if (fsuse->context_str == NULL) { 361a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_context(fsuse->context); 362a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence } 363b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 364b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 365b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_sid(struct cil_sid *sid) 366b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 367b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence /* reset the context to NULL during a re-resolve */ 368b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence sid->context = NULL; 369b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence sid->ordered = CIL_FALSE; 370b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 371b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 372b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_constrain(struct cil_constrain *con) 373b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 374b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classperms_list(con->classperms); 375b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&con->datum_expr, CIL_FALSE); 376b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 377b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 378b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_validatetrans(struct cil_validatetrans *vt) 379b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 380b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&vt->datum_expr, CIL_FALSE); 381b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 382b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 383b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_default(struct cil_default *def) 384b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 385b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&def->class_datums, CIL_FALSE); 386b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 387b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 388b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_defaultrange(struct cil_defaultrange *def) 389b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 390b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&def->class_datums, CIL_FALSE); 391b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 392b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 393b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestatic void cil_reset_booleanif(struct cil_booleanif *bif) 394b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 395b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_destroy(&bif->datum_expr, CIL_FALSE); 396b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 397b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 398b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceint __cil_reset_node(struct cil_tree_node *node, __attribute__((unused)) uint32_t *finished, __attribute__((unused)) void *extra_args) 399b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 400b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence switch (node->flavor) { 401b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CLASS: 402b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_class(node->data); 403b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 404b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_PERM: 405b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_MAP_PERM: 406b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_perm(node->data); 407b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 408b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CLASSPERMISSION: 409b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classpermission(node->data); 410b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 411b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CLASSPERMISSIONSET: 412b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classpermissionset(node->data); 413b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 414b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CLASSMAPPING: 415b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_classmapping(node->data); 416b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 417b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_TYPEALIAS: 418b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SENSALIAS: 419b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CATALIAS: 420b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_alias(node->data); 421b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 422a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence case CIL_USERRANGE: 423a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_userrange(node->data); 424a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence break; 425a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence case CIL_USERLEVEL: 426a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence cil_reset_userlevel(node->data); 427a3abb2c05301b24ad2f8307d07734d89ddf808d8Steve Lawrence break; 428b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_USER: 429b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_user(node->data); 430b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 43177779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy case CIL_USERATTRIBUTE: 43277779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy cil_reset_userattr(node->data); 43377779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy break; 43477779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy case CIL_USERATTRIBUTESET: 43577779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy cil_reset_userattributeset(node->data); 43677779d2ca5a0c6efd113ff34cee432d5bb951f09Yuli Khodorkovskiy break; 437b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SELINUXUSERDEFAULT: 438b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SELINUXUSER: 439b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_selinuxuser(node->data); 440b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 441b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_ROLE: 442b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_role(node->data); 443b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 444b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_ROLEATTRIBUTE: 445b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_roleattr(node->data); 446b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 447b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_ROLEATTRIBUTESET: 448b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_roleattributeset(node->data); 449b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 450b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_TYPE: 451b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_type(node->data); 452b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 453b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_TYPEATTRIBUTE: 454b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_typeattr(node->data); 455b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 456b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_TYPEATTRIBUTESET: 457b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_typeattributeset(node->data); 458b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 459b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_RANGETRANSITION: 460b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_rangetransition(node->data); 461b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 462b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_AVRULE: 463b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_avrule(node->data); 464b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 465b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SENS: 466b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_sens(node->data); 467b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 468b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CAT: 469b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_cat(node->data); 470b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 471b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SENSCAT: 472b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_senscat(node->data); 473b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 474b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CATSET: 475b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_catset(node->data); 476b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 477b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_LEVEL: 478b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_level(node->data); 479b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 480b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_LEVELRANGE: 481b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_levelrange(node->data); 482b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 483b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CONTEXT: 484b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_context(node->data); 485b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 486b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SIDCONTEXT: 487b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_sidcontext(node->data); 488b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 489b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_FILECON: 490b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_filecon(node->data); 491b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 492b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_PORTCON: 493b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_portcon(node->data); 494b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 495b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_NODECON: 496b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_nodecon(node->data); 497b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 498b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_GENFSCON: 499b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_genfscon(node->data); 500b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 501b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_NETIFCON: 502b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_netifcon(node->data); 503b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 504b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_PIRQCON: 505b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_pirqcon(node->data); 506b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 507b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_IOMEMCON: 508b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_iomemcon(node->data); 509b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 510b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_IOPORTCON: 511b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_ioportcon(node->data); 512b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 513b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_PCIDEVICECON: 514b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_pcidevicecon(node->data); 515b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 516f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf case CIL_DEVICETREECON: 517f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf cil_reset_devicetreecon(node->data); 518f0290677091e7eee4a3724a2a86ede9e11f93802Daniel De Graaf break; 519b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_FSUSE: 520b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_fsuse(node->data); 521b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 522b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SID: 523b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_sid(node->data); 524b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 525b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CONSTRAIN: 526b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_MLSCONSTRAIN: 527b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_constrain(node->data); 528b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 529b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_VALIDATETRANS: 530b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_MLSVALIDATETRANS: 531b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_validatetrans(node->data); 532b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 533b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_DEFAULTUSER: 534b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_DEFAULTROLE: 535b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_DEFAULTTYPE: 536b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_default(node->data); 537b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 538b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_DEFAULTRANGE: 539b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_defaultrange(node->data); 540b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 541b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_BOOLEANIF: 542b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_reset_booleanif(node->data); 543b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 544b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_TUNABLEIF: 545b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CALL: 546b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; /* Not effected by optional block disabling */ 547b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_MACRO: 548b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SIDORDER: 549b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CLASSORDER: 550b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_CATORDER: 551b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence case CIL_SENSITIVITYORDER: 552b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; /* Nothing to reset */ 553b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence default: 554b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence break; 555b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 556b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 557b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence return SEPOL_OK; 558b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 559b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 560b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceint cil_reset_ast(struct cil_tree_node *current) 561b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 562b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = SEPOL_ERR; 563b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 564b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence rc = cil_tree_walk(current, __cil_reset_node, NULL, NULL, NULL); 565b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence if (rc != SEPOL_OK) { 566b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_log(CIL_ERR, "Failed to reset AST\n"); 567b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence return SEPOL_ERR; 568b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence } 569b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 570b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence return SEPOL_OK; 571b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 572