1b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* 2b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * Copyright 2011 Tresys Technology, LLC. All rights reserved. 3b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 4b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * Redistribution and use in source and binary forms, with or without 5b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * modification, are permitted provided that the following conditions are met: 6b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 7b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 1. Redistributions of source code must retain the above copyright notice, 8b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * this list of conditions and the following disclaimer. 9b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 10b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 2. Redistributions in binary form must reproduce the above copyright notice, 11b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * this list of conditions and the following disclaimer in the documentation 12b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * and/or other materials provided with the distribution. 13b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 14b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * THIS SOFTWARE IS PROVIDED BY TRESYS TECHNOLOGY, LLC ``AS IS'' AND ANY EXPRESS 15b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 16b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO 17b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * EVENT SHALL TRESYS TECHNOLOGY, LLC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 18b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 19b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 20b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 21b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 22b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 23b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * 25b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * The views and conclusions contained in the software and documentation are those 26b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * of the authors and should not be interpreted as representing official policies, 27b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence * either expressed or implied, of Tresys Technology, LLC. 28b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence */ 29b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 30b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "CuTest.h" 31b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "CilTest.h" 32b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 33b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "../../src/cil_internal.h" 34b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "../../src/cil_copy_ast.h" 35b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "../../src/cil_build_ast.h" 36b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#include "../../src/cil_resolve_ast.h" 37b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 38b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence#define CIL_TEST_SYM_SIZE 1 39b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 40b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrenceint __cil_copy_node_helper(struct cil_tree_node *orig, uint32_t *finished, void *extra_args); 41b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 42b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_args_copy { 43b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *dest; 44b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *db; 45b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence}; 46b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 47b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencestruct cil_args_copy *gen_copy_args(struct cil_tree_node *node, struct cil_db *db) 48b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence{ 49b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *args = cil_malloc(sizeof(*args)); 50b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence args->dest = node; 51b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence args->db = db; 52b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 53b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence return args; 54b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 55b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 56b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_list(CuTest *tc) { 57b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "foo1", "foo2", ")", NULL}; 58b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 59b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 60b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *cil_l; 61b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 62b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 63b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(&cil_l); 64b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 65b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_set_to_list(test_tree->root->cl_head, cil_l, 1); 66b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 67b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *copy_list; 68b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(©_list); 69b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 70b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc =cil_copy_list(cil_l, ©_list); 71b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 72b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, copy_list->head->data, cil_l->head->data); 73b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, copy_list->head->next->data, cil_l->head->next->data); 74b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, copy_list->head->flavor, cil_l->head->flavor); 75b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, copy_list->head->next->flavor, cil_l->head->next->flavor); 76b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 77b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 78b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_list_sublist(CuTest *tc) { 79b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "foo1", "foo2", "(", "foo3", ")", ")", NULL}; 80b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 81b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 82b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *cil_l; 83b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 84b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 85b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(&cil_l); 86b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 87b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_set_to_list(test_tree->root->cl_head, cil_l, 1); 88b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 89b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *copy_list; 90b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(©_list); 91b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 92b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_list(cil_l, ©_list); 93b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 94b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, copy_list->head->data, cil_l->head->data); 95b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, copy_list->head->next->data, cil_l->head->next->data); 96b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_list *)copy_list->head->next->next->data)->head->data, ((struct cil_list *)cil_l->head->next->next->data)->head->data); 97b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, copy_list->head->flavor, cil_l->head->flavor); 98b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, copy_list->head->next->flavor, cil_l->head->next->flavor); 99b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_list *)copy_list->head->next->next->data)->head->flavor, ((struct cil_list *)cil_l->head->next->next->data)->head->flavor); 100b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 101b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 102b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_list_sublist_extra(CuTest *tc) { 103b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "foo1", "foo2", "(", "foo3", ")", "foo4", ")", NULL}; 104b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 105b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 106b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *cil_l; 107b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 108b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 109b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(&cil_l); 110b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 111b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_set_to_list(test_tree->root->cl_head, cil_l, 1); 112b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 113b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *copy_list; 114b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(©_list); 115b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 116b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_list(cil_l, ©_list); 117b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 118b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, copy_list->head->data, cil_l->head->data); 119b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, copy_list->head->next->data, cil_l->head->next->data); 120b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_list *)copy_list->head->next->next->data)->head->data, ((struct cil_list *)cil_l->head->next->next->data)->head->data); 121b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, copy_list->head->next->next->next->data, cil_l->head->next->next->next->data); 122b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, copy_list->head->flavor, cil_l->head->flavor); 123b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, copy_list->head->next->flavor, cil_l->head->next->flavor); 124b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_list *)copy_list->head->next->next->data)->head->flavor, ((struct cil_list *)cil_l->head->next->next->data)->head->flavor); 125b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, copy_list->head->next->next->next->flavor, cil_l->head->next->next->next->flavor); 126b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 127b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 128b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_list_orignull_neg(CuTest *tc) { 129b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "foo1", "foo2", ")", NULL}; 130b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 131b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 132b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *cil_l = NULL; 133b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 134b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 135b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 136b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list *copy_list; 137b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(©_list); 138b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 139b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_list(cil_l, ©_list); 140b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_ERR); 141b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertPtrEquals(tc, copy_list->head, NULL); 142b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 143b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 144b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_block(CuTest *tc) { 145b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "block", "a", "(", "type", "log", ")", ")", NULL}; 146b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 147b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 148b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 149b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 150b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 151b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 152b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 153b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 154b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 155b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 156b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 157b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 158b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 159b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_block(test_db, test_tree->root->cl_head->cl_head, test_ast_node, 0); 160b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 161b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 162b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 163b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 164b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 165b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, cil_sym_sizes[CIL_SYM_ARRAY_BLOCK][CIL_SYM_BLOCKS]); 166b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 167b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_block(test_db, test_ast_node->data, &test_copy->data, &sym); 168b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 169b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 170b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 171b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_perm(CuTest *tc) { 172b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "class", "foo", "(", "read", "write", "open", ")", ")", NULL}; 173b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 174b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 175b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 176b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 177b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 178b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 179b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 180b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 181b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 182b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 183b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *new_node; 184b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_class_init(&new_node); 185b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 186b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *new_tree_node; 187b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&new_tree_node); 188b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence new_tree_node->data = new_node; 189b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence new_tree_node->flavor = CIL_CLASS; 190b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 191b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = new_tree_node; 192b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 193b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 194b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 195b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 196b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 197b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 198b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_CLASS_SYM_SIZE); 199b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 200b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_perm(test_db, test_tree->root->cl_head->cl_head->next->next->cl_head, test_ast_node); 201b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_perm(test_db, test_ast_node->data, &test_copy->data, &sym); 202b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 203b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_perm(test_db, test_tree->root->cl_head->cl_head->next->next->cl_head->next, test_ast_node); 204b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence rc = cil_copy_perm(test_db, test_ast_node->data, &test_copy->data, &sym); 205b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 206b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_perm(test_db, test_tree->root->cl_head->cl_head->next->next->cl_head->next->next, test_ast_node); 207b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence rc = cil_copy_perm(test_db, test_ast_node->data, &test_copy->data, &sym); 208b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 209b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 210b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 211b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 212b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_class(CuTest *tc) { 213b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "class", "file", "(", "read", "write", "open", ")", ")", NULL}; 214b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 215b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 216b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 217b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 218b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 219b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 220b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 221b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 222b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 223b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 224b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 225b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 226b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 227b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_class(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 228b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 229b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 230b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 231b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 232b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 233b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_CLASS_SYM_SIZE); 234b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 235b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_class(test_db, test_ast_node->data, &test_copy->data, &sym); 236b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 237b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 238b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 239b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_common(CuTest *tc) { 240b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "common", "test", "(", "read", "write", ")", ")", NULL}; 241b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 242b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 243b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 244b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 245b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 246b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 247b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 248b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 249b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 250b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 251b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 252b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 253b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 254b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_common(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 255b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 256b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 257b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 258b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 259b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 260b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_CLASS_SYM_SIZE); 261b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 262b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_common(test_db, test_ast_node->data, &test_copy->data, &sym); 263b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 264b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 265b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 266b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_classcommon(CuTest *tc) { 267b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "classcommon", "file", "file", NULL}; 268b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 269b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 270b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 271b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 272b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 273b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 274b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 275b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 276b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 277b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 278b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *test_key = test_tree->root->cl_head->cl_head->next->data; 279b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *test_cls; 280b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_class_init(&test_cls); 281b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 282b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 283b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 284b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 285b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_symtab_insert(&test_db->symtab[CIL_SYM_CLASSES], (hashtab_key_t)test_key, (struct cil_symtab_datum*)test_cls, test_ast_node); 286b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 287b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->data = test_cls; 288b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->flavor = CIL_CLASS; 289b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 290b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_classcommon(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 291b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 292b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_classcommon *test_copy; 293b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_classcommon_init(&test_copy); 294b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 295b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 296b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_CLASS_SYM_SIZE); 297b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 298b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_classcommon(test_db, test_ast_node->data, (void**)&test_copy, &sym); 299b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 300b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_classcommon *)test_ast_node->data)->class_str, test_copy->class_str); 301b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_classcommon *)test_ast_node->data)->common_str, test_copy->common_str); 302b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 303b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 304b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_sid(CuTest *tc) { 305b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sid", "test", ")", NULL}; 306b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 307b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 308b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 309b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 310b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 311b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 312b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 313b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 314b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 315b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 316b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 317b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 318b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 319b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_sid(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 320b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 321b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 322b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 323b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 324b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 325b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 326b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 327b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_sid(test_db, test_ast_node->data, &test_copy->data, &sym); 328b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 329b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 330b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 331b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_sidcontext(CuTest *tc) { 332b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sidcontext", "test", "(", "blah_u", "blah_r", "blah_t", "(", "low", "high", ")", ")", ")", NULL}; 333b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 334b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 335b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 336b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 337b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 338b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 339b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 340b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 341b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 342b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 343b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 344b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 345b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 346b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_sidcontext(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 347b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 348b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 349b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 350b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 351b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 352b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 353b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 354b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_sidcontext(test_db, test_ast_node->data, &test_copy->data, &sym); 355b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 356b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_user *)test_copy->data)->datum.name, 357b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_user *)test_ast_node->data)->datum.name); 358b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 359b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 360b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_user(CuTest *tc) { 361b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "user", "sysadm", ")", NULL}; 362b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 363b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 364b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 365b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 366b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 367b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 368b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 369b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 370b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 371b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 372b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 373b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 374b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 375b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_user(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 376b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 377b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 378b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 379b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 380b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 381b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 382b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 383b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_user(test_db, test_ast_node->data, &test_copy->data, &sym); 384b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 385b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 386b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 387b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_role(CuTest *tc) { 388b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "role", "role_r", ")", NULL}; 389b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 390b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 391b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 392b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 393b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 394b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 395b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 396b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 397b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 398b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 399b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 400b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 401b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 402b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_role(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 403b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 404b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 405b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 406b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 407b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 408b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 409b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 410b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_role(test_db, test_ast_node->data, &test_copy->data, &sym); 411b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 412b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 413b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 414b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_userrole(CuTest *tc) { 415b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "userrole", "staff_u", "staff_r", ")", NULL}; 416b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 417b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 418b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 419b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 420b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 421b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 422b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 423b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 424b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 425b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 426b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 427b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 428b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 429b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_userrole(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 430b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 431b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_userrole *test_copy; 432b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_userrole_init(&test_copy); 433b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 434b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 435b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 436b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 437b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_userrole(test_db, test_ast_node->data, (void**)&test_copy, &sym); 438b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 439b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_userrole *)test_ast_node->data)->user_str, test_copy->user_str); 440b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_userrole *)test_ast_node->data)->role_str, test_copy->role_str); 441b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 442b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 443b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_type(CuTest *tc) { 444b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "type", "test", ")", NULL}; 445b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 446b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 447b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 448b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 449b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 450b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 451b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 452b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 453b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 454b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 455b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 456b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 457b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 458b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_type(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 459b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 460b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 461b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 462b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 463b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 464b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 465b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 466b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_type(test_db, test_ast_node->data, &test_copy->data, &sym); 467b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 468b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 469b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 470b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_typealias(CuTest *tc) { 471b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typealias", ".test.type", "type_t", ")", "(", "type", "test", ")", NULL}; 472b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 473b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 474b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 475b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 476b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 477b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 478b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 479b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 480b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 481b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 482b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 483b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 484b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 485b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_typealias(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 486b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 487b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 488b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 489b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 490b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 491b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 492b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 493b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_typealias(test_db, test_ast_node->data, &test_copy->data, &sym); 494b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 495b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 496b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 497b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_typeattribute(CuTest *tc) { 498b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typettribute", "type_t", ")", NULL}; 499b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 500b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 501b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 502b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 503b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 504b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 505b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 506b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 507b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 508b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 509b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 510b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 511b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 512b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_typeattribute(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 513b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 514b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 515b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 516b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 517b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 518b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 519b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 520b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_typeattribute(test_db, test_ast_node->data, &test_copy->data, &sym); 521b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 522b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 523b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 524b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_bool(CuTest *tc) { 525b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "boolean", "foo", "true", ")", NULL}; 526b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 527b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 528b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 529b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 530b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 531b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 532b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 533b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 534b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 535b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 536b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 537b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 538b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 539b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_bool(test_db, test_tree->root->cl_head->cl_head, test_ast_node, CIL_BOOL); 540b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 541b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 542b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 543b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 544b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 545b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 546b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 547b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_bool(test_db, test_ast_node->data, &test_copy->data, &sym); 548b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 549b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_bool *)test_copy->data)->value, 550b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_bool *)test_ast_node->data)->value); 551b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 552b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 553b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_type_rule(CuTest *tc) { 554b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typetransition", "foo", "bar", "file", "foobar", ")", NULL}; 555b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 556b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 557b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 558b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 559b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 560b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 561b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 562b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 563b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 564b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 565b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 566b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 567b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 568b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_type_rule(test_tree->root->cl_head->cl_head, test_ast_node, CIL_TYPE_TRANSITION); 569b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 570b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_type_rule *test_copy; 571b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_type_rule_init(&test_copy); 572b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 573b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 574b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 575b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 576b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_type_rule(test_db, test_ast_node->data, (void**)&test_copy, &sym); 577b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 578b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_type_rule *)test_ast_node->data)->rule_kind, test_copy->rule_kind); 579b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_type_rule *)test_ast_node->data)->src_str, test_copy->src_str); 580b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_type_rule *)test_ast_node->data)->tgt_str, test_copy->tgt_str); 581b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_type_rule *)test_ast_node->data)->obj_str, test_copy->obj_str); 582b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 583b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 584b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_avrule(CuTest *tc) { 585b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "allow", "test", "foo", "(", "bar", "(", "read", "write", ")", ")", ")", NULL}; 586b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 587b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 588b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 589b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 590b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 591b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 592b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 593b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 594b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 595b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 596b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 597b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 598b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 599b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_current; 600b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_current = test_tree->root->cl_head->cl_head; 601b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 602b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_avrule(test_current, test_ast_node, CIL_AVRULE_ALLOWED); 603b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 604b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_avrule *test_copy; 605b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_avrule_init(&test_copy); 606b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 607b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 608b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 609b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 610b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_avrule(test_db, test_ast_node->data, (void**)&test_copy, &sym); 611b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 612b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_avrule *)test_ast_node->data)->rule_kind, test_copy->rule_kind); 613b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_avrule *)test_ast_node->data)->src_str, test_copy->src_str); 614b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_avrule *)test_ast_node->data)->tgt_str, test_copy->tgt_str); 615b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_avrule *)test_ast_node->data)->classpermset->class_str, test_copy->classpermset->class_str); 616b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_avrule *)test_ast_node->data)->classpermset->permset->perms_list_str->head->flavor, test_copy->classpermset->permset->perms_list_str->head->flavor); 617b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_avrule *)test_ast_node->data)->classpermset->permset->perms_list_str->head->data, (char*)test_copy->classpermset->permset->perms_list_str->head->data); 618b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_avrule *)test_ast_node->data)->classpermset->permset->perms_list_str->head->next->flavor, test_copy->classpermset->permset->perms_list_str->head->next->flavor); 619b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_avrule *)test_ast_node->data)->classpermset->permset->perms_list_str->head->next->data, (char*)test_copy->classpermset->permset->perms_list_str->head->next->data); 620b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 621b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 622b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_sens(CuTest *tc) { 623b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivity", "s0", ")", NULL}; 624b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 625b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 626b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 627b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 628b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 629b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 630b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 631b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 632b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 633b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 634b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 635b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 636b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 637b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_sensitivity(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 638b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 639b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 640b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 641b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 642b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 643b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 644b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 645b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_sens(test_db, test_ast_node->data, &test_copy->data, &sym); 646b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 647b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 648b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 649b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_sensalias(CuTest *tc) { 650b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivityalias", "s0", "alias", ")", NULL}; 651b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 652b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 653b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 654b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 655b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 656b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 657b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 658b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 659b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 660b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 661b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 662b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 663b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 664b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_sensalias(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 665b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 666b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 667b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 668b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 669b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 670b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 671b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 672b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_sensalias(test_db, test_ast_node->data, &test_copy->data, &sym); 673b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 674b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_sensalias *)test_copy->data)->sens_str, 675b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_sensalias *)test_ast_node->data)->sens_str); 676b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 677b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 678b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_cat(CuTest *tc) { 679b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "category", "c0", ")", NULL}; 680b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 681b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 682b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 683b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 684b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 685b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 686b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 687b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 688b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 689b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 690b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 691b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 692b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 693b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_category(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 694b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 695b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 696b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 697b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 698b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 699b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 700b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 701b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_cat(test_db, test_ast_node->data, &test_copy->data, &sym); 702b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 703b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 704b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 705b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_catalias(CuTest *tc) { 706b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "categoryalias", "c0", "red", ")", NULL}; 707b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 708b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 709b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 710b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 711b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 712b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 713b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 714b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 715b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 716b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 717b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 718b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 719b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 720b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_catalias(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 721b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 722b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 723b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 724b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 725b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 726b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 727b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 728b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_catalias(test_db, test_ast_node->data, &test_copy->data, &sym); 729b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 730b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_catalias *)test_copy->data)->cat_str, 731b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_catalias *)test_ast_node->data)->cat_str); 732b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 733b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 734b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_senscat(CuTest *tc) { 735b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivity", "s0", ")", 736b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivity", "s1", ")", 737b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "dominance", "(", "s0", "s1", ")", ")", 738b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "category", "c0", ")", 739b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "category", "c255", ")", 740b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "categoryorder", "(", "c0", "c255", ")", ")", 741b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivitycategory", "s1", "(", "c0", "c255", ")", ")", NULL}; 742b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 743b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 744b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 745b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 746b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 747b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 748b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 749b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 750b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 751b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 752b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 753b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 754b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 755b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_senscat(test_db, test_tree->root->cl_head->next->next->next->next->next->next->cl_head, test_ast_node); 756b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 757b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_senscat *test_copy; 758b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_senscat_init(&test_copy); 759b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 760b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 761b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 762b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 763b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_senscat(test_db, test_ast_node->data, (void**)&test_copy, &sym); 764b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 765b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_senscat *)test_ast_node->data)->sens_str, test_copy->sens_str); 766b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_senscat *)test_ast_node->data)->catset->cat_list_str->head->data, 767b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence (char*)test_copy->catset->cat_list_str->head->data); 768b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_senscat *)test_ast_node->data)->catset->cat_list_str->head->next->data, 769b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence (char*)test_copy->catset->cat_list_str->head->next->data); 770b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 771b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 772b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_catorder(CuTest *tc) { 773b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "category", "c0", ")", 774b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "category", "c255", ")", 775b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "categoryorder", "(", "c0", "c255", ")", ")", NULL}; 776b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 777b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 778b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 779b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 780b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 781b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 782b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 783b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 784b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 785b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 786b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 787b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 788b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 789b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_catorder(test_db, test_tree->root->cl_head->next->next->cl_head, test_ast_node); 790b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 791b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_catorder *test_copy; 792b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_catorder_init(&test_copy); 793b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 794b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 795b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 796b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 797b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_catorder(test_db, test_ast_node->data, (void**)&test_copy, &sym); 798b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 799b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_catorder *)test_ast_node->data)->cat_list_str->head->data, (char*)test_copy->cat_list_str->head->data); 800b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_catorder *)test_ast_node->data)->cat_list_str->head->next->data, (char*)test_copy->cat_list_str->head->next->data); 801b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 802b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 803b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_dominance(CuTest *tc) { 804b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivity", "s0", ")", 805b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivity", "s1", ")", 806b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivity", "s2", ")", 807b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "dominance", "(", "s0", "s1", ")", ")", NULL}; 808b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 809b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 810b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 811b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 812b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 813b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 814b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 815b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 816b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 817b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 818b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 819b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 820b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 821b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_dominance(test_db, test_tree->root->cl_head->next->next->next->cl_head, test_ast_node); 822b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 823b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sens_dominates *test_copy; 824b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_sens_dominates_init(&test_copy); 825b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 826b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 827b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 828b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 829b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_dominance(test_db, test_ast_node->data, (void**)&test_copy, &sym); 830b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 831b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_sens_dominates *)test_ast_node->data)->sens_list_str->head->data, (char*)test_copy->sens_list_str->head->data); 832b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, (char*)((struct cil_sens_dominates *)test_ast_node->data)->sens_list_str->head->next->data, (char*)test_copy->sens_list_str->head->next->data); 833b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 834b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 835b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_level(CuTest *tc) { 836b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "level", "low", "(", "s0", "(", "c1", ")", ")", ")", NULL}; 837b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 838b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 839b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 840b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 841b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 842b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 843b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 844b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 845b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 846b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 847b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 848b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 849b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 850b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_level(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 851b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 852b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 853b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 854b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 855b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 856b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 857b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 858b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_level(test_db, test_ast_node->data, &test_copy->data, &sym); 859b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 860b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 861b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 862b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_fill_level(CuTest *tc) { 863b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "level", "low", "(", "s0", "(", "c1", ")", ")", ")", NULL}; 864b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 865b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 866b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 867b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 868b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 869b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 870b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 871b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 872b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 873b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 874b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 875b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 876b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 877b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_level(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 878b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 879b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 880b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 881b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_level_init((struct cil_level**)&test_copy->data); 882b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 883b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 884b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 885b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 886b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_fill_level((struct cil_level*)test_ast_node->data, (struct cil_level*)test_copy->data); 887b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 888b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_level *)test_copy->data)->sens_str, 889b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_level *)test_ast_node->data)->sens_str); 890b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 891b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 892b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_context(CuTest *tc) { 893b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "context", "packet_default", "(", "system_u", "object_r", "etc_t", "(", "low", "high", ")", ")", ")", NULL}; 894b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 895b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 896b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 897b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 898b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 899b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 900b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 901b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 902b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 903b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 904b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 905b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 906b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 907b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_context(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 908b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 909b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 910b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 911b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 912b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 913b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 914b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 915b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_context(test_db, test_ast_node->data, &test_copy->data, &sym); 916b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 917b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 918b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 919b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_netifcon(CuTest *tc) { 920b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "netifcon", "eth0", "if_default", "packet_default", ")", NULL}; 921b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 922b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 923b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 924b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 925b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 926b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 927b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 928b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 929b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 930b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 931b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 932b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 933b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 934b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_netifcon(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 935b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 936b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_netifcon *test_copy; 937b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 938b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 939b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 940b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 941b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_netifcon(test_db, test_ast_node->data, (void**)&test_copy, &sym); 942b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 943b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->interface_str, 944b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->interface_str); 945b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->if_context_str, 946b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->if_context_str); 947b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->packet_context_str, 948b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->packet_context_str); 949b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 950b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 951b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_netifcon_nested(CuTest *tc) { 952b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "netifcon", "eth1", 953b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "system_u", "object_r", "netif_t", "(", "low", "high", ")", ")", 954b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "system_u", "object_r", "netif_t", "(", "low", "high", ")", ")", ")", NULL}; 955b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 956b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 957b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 958b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 959b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 960b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 961b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 962b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 963b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 964b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 965b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 966b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 967b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 968b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_netifcon(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 969b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 970b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_netifcon *test_copy; 971b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 972b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 973b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 974b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 975b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_netifcon(test_db, test_ast_node->data, (void**)&test_copy, &sym); 976b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 977b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->interface_str, 978b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->interface_str); 979b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->if_context_str, 980b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->if_context_str); 981b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->packet_context_str, 982b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->packet_context_str); 983b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->packet_context->user_str, 984b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->packet_context->user_str); 985b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->packet_context->role_str, 986b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->packet_context->role_str); 987b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->packet_context->type_str, 988b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->packet_context->type_str); 989b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->packet_context->range_str, 990b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_netifcon *)test_ast_node->data)->packet_context->range_str); 991b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 992b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 993b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_fill_context(CuTest *tc) { 994b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "context", "packet_default", "(", "system_u", "object_r", "etc_t", "range", ")", ")", NULL}; 995b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 996b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 997b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 998b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 999b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1000b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1001b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1002b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1003b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1004b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1005b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1006b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1007b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1008b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_context(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1009b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1010b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 1011b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 1012b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_context_init((struct cil_context**)&test_copy->data); 1013b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1014b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1015b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1016b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1017b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_fill_context((struct cil_context*)test_ast_node->data, (struct cil_context*)test_copy->data); 1018b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1019b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->user_str, 1020b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->user_str); 1021b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->role_str, 1022b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->role_str); 1023b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->type_str, 1024b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->type_str); 1025b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->range_str, 1026b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->range_str); 1027b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1028b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1029b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_fill_context_anonrange(CuTest *tc) { 1030b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "context", "packet_default", "(", "system_u", "object_r", "etc_t", "(", "low", "high", ")", ")", ")", NULL}; 1031b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1032b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1033b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1034b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1035b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1036b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1037b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1038b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1039b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1040b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1041b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1042b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1043b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1044b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_context(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1045b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1046b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 1047b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 1048b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_context_init((struct cil_context**)&test_copy->data); 1049b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1050b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1051b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1052b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1053b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_fill_context((struct cil_context*)test_ast_node->data, (struct cil_context*)test_copy->data); 1054b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1055b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->user_str, 1056b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->user_str); 1057b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->role_str, 1058b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->role_str); 1059b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->type_str, 1060b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->type_str); 1061b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_context *)test_copy->data)->range_str, 1062b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_context *)test_ast_node->data)->range_str); 1063b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1064b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1065b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_call(CuTest *tc) { 1066b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "call", "mm", "(", "foo", ")", ")", NULL}; 1067b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1068b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1069b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1070b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1071b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1072b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1073b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1074b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1075b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1076b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1077b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1078b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1079b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1080b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_call(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1081b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1082b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_call *test_copy; 1083b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1084b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1085b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1086b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1087b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_call(test_db, test_ast_node->data, (void**)&test_copy, &sym); 1088b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1089b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->macro_str, ((struct cil_call *)test_ast_node->data)->macro_str); 1090b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1091b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1092b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_optional(CuTest *tc) { 1093b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "optional", "opt", "(", "allow", "foo", "bar", "(", "file", "(", "read", ")", ")", ")", ")", NULL}; 1094b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1095b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1096b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1097b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1098b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1099b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1100b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1101b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1102b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1103b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1104b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1105b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1106b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1107b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_optional(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1108b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1109b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 1110b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 1111b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1112b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1113b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1114b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1115b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_optional(test_db, test_ast_node->data, &test_copy->data, &sym); 1116b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1117b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1118b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1119b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_nodecon(CuTest *tc) { 1120b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "nodecon", "ipaddr", "ipaddr", "con", ")", NULL}; 1121b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1122b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1123b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1124b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1125b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1126b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1127b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1128b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1129b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1130b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1131b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1132b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1133b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1134b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_nodecon(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1135b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1136b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_nodecon *test_copy; 1137b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1138b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1139b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1140b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1141b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_nodecon(test_db, test_ast_node->data, (void**)&test_copy, &sym); 1142b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1143b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->addr_str, 1144b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_nodecon *)test_ast_node->data)->addr_str); 1145b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->mask_str, 1146b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_nodecon *)test_ast_node->data)->mask_str); 1147b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->context_str, 1148b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_nodecon *)test_ast_node->data)->context_str); 1149b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1150b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1151b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_nodecon_anon(CuTest *tc) { 1152b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "nodecon", "(", "192.168.1.1", ")", "(", "192.168.1.1", ")", "(", "user", "role", "type", "(", "low", "high", ")", ")", ")", NULL}; 1153b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1154b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1155b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1156b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1157b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1158b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1159b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1160b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1161b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1162b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1163b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1164b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1165b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1166b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_nodecon(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1167b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1168b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_nodecon *test_copy; 1169b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1170b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1171b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1172b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1173b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_nodecon(test_db, test_ast_node->data, (void**)&test_copy, &sym); 1174b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1175b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->addr_str, 1176b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_nodecon *)test_ast_node->data)->addr_str); 1177b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->mask_str, 1178b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_nodecon *)test_ast_node->data)->mask_str); 1179b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, test_copy->context_str, 1180b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence ((struct cil_nodecon *)test_ast_node->data)->context_str); 1181b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1182b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1183b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_fill_ipaddr(CuTest *tc) { 1184b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "ipaddr", "ip", "192.168.1.1", ")", NULL}; 1185b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1186b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1187b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1188b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1189b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1190b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1191b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1192b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1193b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1194b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1195b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1196b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1197b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1198b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_ipaddr(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1199b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1200b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1201b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1202b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1203b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_ipaddr *new; 1204b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_ipaddr_init(&new); 1205b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_ipaddr *old; 1206b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_ipaddr_init(&new); 1207b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1208b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence old = (struct cil_ipaddr*)test_ast_node->data; 1209b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_fill_ipaddr(old, new); 1210b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1211b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1212b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, old->family, new->family); 1213b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1214b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1215b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_ipaddr(CuTest *tc) { 1216b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "ipaddr", "ip", "192.168.1.1", ")", NULL}; 1217b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1218b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1219b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1220b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1221b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1222b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1223b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1224b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1225b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1226b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1227b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1228b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1229b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1230b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_ipaddr(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1231b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1232b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_copy; 1233b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_copy); 1234b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1235b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1236b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1237b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1238b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_ipaddr(test_db, test_ast_node->data, &test_copy->data, &sym); 1239b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1240b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1241b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1242b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_conditional(CuTest *tc) { 1243b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "booleanif", "(", "and", "foo", "bar", ")", 1244b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "true", 1245b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "allow", "foo", "bar", "(", "file", "(", "read", ")", ")", ")", ")", ")", NULL}; 1246b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1247b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1248b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1249b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1250b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1251b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1252b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1253b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1254b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1255b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1256b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1257b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1258b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1259b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_boolif(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1260b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1261b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_list_item *curr_old; 1262b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence curr_old = ((struct cil_booleanif*)test_ast_node->data)->expr_stack->head; 1263b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1264b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_conditional *cond_new; 1265b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1266b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1267b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1268b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1269b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_conditional(test_db, curr_old->data, (void**)&cond_new, &sym); 1270b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1271b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1272b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_conditional*)curr_old->data)->str, cond_new->str); 1273b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, ((struct cil_conditional*)curr_old->data)->flavor, cond_new->flavor); 1274b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1275b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1276b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_boolif(CuTest *tc) { 1277b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "booleanif", "(", "and", "foo", "bar", ")", 1278b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "true", 1279b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "allow", "foo", "bar", "(", "file", "(", "read", ")", ")", ")", ")", ")", NULL}; 1280b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1281b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1282b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1283b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1284b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1285b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1286b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1287b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1288b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1289b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1290b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1291b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1292b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1293b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_boolif(test_db, test_tree->root->cl_head->cl_head, test_ast_node); 1294b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1295b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_booleanif *test_copy; 1296b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1297b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1298b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1299b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1300b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_boolif(test_db, test_ast_node->data, (void**)&test_copy, &sym); 1301b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1302b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1303b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1304b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_constrain(CuTest *tc) { 1305b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "mlsconstrain", "(", "file", "(", "create", "relabelto", ")", ")", "(", "eq", "l2", "h2", ")", ")", NULL}; 1306b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1307b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1308b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1309b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1310b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1311b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1312b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1313b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1314b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1315b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1316b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1317b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1318b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1319b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_constrain(test_db, test_tree->root->cl_head->cl_head, test_ast_node, CIL_MLSCONSTRAIN); 1320b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1321b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_constrain *test_copy; 1322b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1323b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_t sym; 1324b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence symtab_init(&sym, CIL_TEST_SYM_SIZE); 1325b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1326b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_constrain(test_db, test_ast_node->data, (void**)&test_copy, &sym); 1327b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1328b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertStrEquals(tc, ((struct cil_constrain*)test_copy)->classpermset->class_str, ((struct cil_constrain *)test_ast_node->data)->classpermset->class_str); 1329b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1330b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* 1331b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_ast(CuTest *tc) { 1332b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "mlsconstrain", "(", "file", "dir", ")", "(", "create", "relabelto", ")", "(", "eq", "l2", "h2", ")", ")", NULL}; 1333b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1334b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1335b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1336b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1337b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1338b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1339b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1340b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1341b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1342b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1343b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1344b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1345b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1346b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_constrain(test_db, test_tree->root->cl_head->cl_head, test_ast_node, CIL_MLSCONSTRAIN); 1347b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1348b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_current; 1349b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_current = test_tree->root->cl_head->cl_head; 1350b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1351b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_constrain *test_copy; 1352b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_constrain_init(&test_copy); 1353b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(&test_copy->expr); 1354b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1355b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_ast(((struct cil_constrain *)test_ast_node->data)->expr, test_copy->expr); 1356b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_OK); 1357b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1358b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1359b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_ast_neg(CuTest *tc) { 1360b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "mlsconstrain", ")", NULL}; 1361b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1362b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1363b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1364b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1365b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_ast_node; 1366b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&test_ast_node); 1367b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1368b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1369b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1370b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1371b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->parent = test_db->ast->root; 1372b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_ast_node->line = 1; 1373b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1374b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_gen_constrain(test_db, test_tree->root->cl_head->cl_head, test_ast_node, CIL_MLSCONSTRAIN); 1375b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1376b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *test_current; 1377b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence test_current = test_tree->root->cl_head->cl_head; 1378b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1379b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_constrain *test_copy; 1380b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_constrain_init(&test_copy); 1381b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_list_init(&test_copy->expr); 1382b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1383b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = cil_copy_ast(((struct cil_constrain *)test_ast_node->data)->expr, test_copy->expr); 1384b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, rc, SEPOL_ERR); 1385b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1386b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence*/ 1387b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence/* node_helper functions */ 1388b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1389b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_block(CuTest *tc) { 1390b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "block", "a", "(", "type", "log", ")", ")", NULL}; 1391b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1392b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1393b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1394b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1395b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1396b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1397b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1398b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1399b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1400b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1401b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1402b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1403b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1404b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1405b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1406b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1407b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1408b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1409b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1410b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1411b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1412b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_block_merge(CuTest *tc) { 1413b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "block", "a", "(", "type", "log", ")", ")", NULL}; 1414b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1415b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1416b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1417b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1418b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1419b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1420b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1421b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1422b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1423b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1424b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1425b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1426b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1427b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1428b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1429b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1430b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1431b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1432b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_perm(CuTest *tc) { 1433b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "class", "foo", "(", "read", "write", "open", ")", ")", NULL}; 1434b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1435b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1436b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1437b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1438b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1439b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1440b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1441b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1442b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1443b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1444b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1445b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1446b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_class *test_class; 1447b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_class_init(&test_class); 1448b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1449b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *parent_node; 1450b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&parent_node); 1451b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->flavor = CIL_CLASS; 1452b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->data = test_class; 1453b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *root; 1454b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&root); 1455b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence root->flavor = CIL_ROOT; 1456b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->parent = root; 1457b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1458b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(parent_node, test_db2); 1459b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1460b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1461b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1462b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head->cl_head, &finished, extra_args); 1463b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1464b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1465b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1466b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1467b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_perm_neg(CuTest *tc) { 1468b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "class", "foo", "(", "read", "write", "open", ")", ")", NULL}; 1469b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1470b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1471b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1472b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1473b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1474b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1475b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1476b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1477b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1478b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1479b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1480b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1481b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1482b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head->cl_head, &finished, extra_args); 1483b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1484b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 1485b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1486b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1487b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_class(CuTest *tc) { 1488b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "class", "file", "(", "read", "write", "open", ")", ")", NULL}; 1489b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1490b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1491b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1492b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1493b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1494b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1495b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1496b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1497b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1498b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1499b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1500b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1501b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1502b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1503b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1504b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1505b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1506b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1507b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1508b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1509b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1510b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_class_dup_neg(CuTest *tc) { 1511b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "class", "test", "(", "read", "write", ")", ")", NULL}; 1512b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1513b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1514b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1515b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1516b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1517b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1518b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1519b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1520b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1521b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1522b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1523b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1524b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1525b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1526b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1527b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 1528b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1529b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1530b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_common(CuTest *tc) { 1531b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "common", "test", "(", "read", "write", ")", ")", NULL}; 1532b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1533b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1534b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1535b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1536b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1537b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1538b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1539b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1540b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1541b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1542b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1543b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1544b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1545b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1546b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1547b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1548b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1549b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1550b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1551b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1552b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1553b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_common_dup_neg(CuTest *tc) { 1554b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "class", "file", "(", "read", "write", "open", ")", ")", NULL}; 1555b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1556b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1557b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1558b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1559b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1560b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1561b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1562b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1563b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1564b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1565b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1566b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1567b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1568b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1569b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1570b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 1571b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1572b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1573b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_classcommon(CuTest *tc) { 1574b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "classcommon", "file", "file", NULL}; 1575b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1576b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1577b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1578b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1579b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1580b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1581b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1582b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1583b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1584b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1585b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1586b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1587b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1588b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1589b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1590b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1591b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1592b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1593b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1594b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1595b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1596b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_sid(CuTest *tc) { 1597b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sid", "test", ")", NULL}; 1598b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1599b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1600b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1601b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1602b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1603b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1604b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1605b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1606b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1607b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1608b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1609b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1610b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1611b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1612b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1613b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1614b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1615b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1616b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1617b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1618b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1619b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_sid_merge(CuTest *tc) { 1620b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sid", "test", ")", NULL}; 1621b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1622b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1623b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1624b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1625b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1626b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1627b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1628b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1629b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1630b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1631b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1632b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1633b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1634b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1635b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1636b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1637b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1638b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1639b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_sidcontext(CuTest *tc) { 1640b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sidcontext", "test", "(", "blah_u", "blah_r", "blah_t", "(", "low", "high", ")", ")", ")", NULL}; 1641b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1642b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1643b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1644b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1645b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1646b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1647b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1648b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1649b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1650b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1651b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1652b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1653b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1654b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1655b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1656b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1657b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1658b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1659b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1660b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1661b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1662b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_user(CuTest *tc) { 1663b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "user", "sysadm", ")", NULL}; 1664b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1665b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1666b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1667b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1668b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1669b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1670b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1671b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1672b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1673b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1674b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1675b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1676b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1677b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1678b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1679b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1680b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1681b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1682b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1683b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1684b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1685b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_user_merge(CuTest *tc) { 1686b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "user", "sysadm", ")", NULL}; 1687b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1688b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1689b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1690b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1691b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1692b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1693b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1694b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1695b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1696b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1697b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1698b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1699b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1700b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1701b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1702b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1703b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1704b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1705b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_role(CuTest *tc) { 1706b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "role", "role_r", ")", NULL}; 1707b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1708b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1709b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1710b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1711b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1712b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1713b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1714b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1715b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1716b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1717b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1718b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1719b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1720b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1721b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1722b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1723b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1724b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1725b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1726b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1727b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1728b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_role_merge(CuTest *tc) { 1729b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "role", "role_r", ")", NULL}; 1730b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1731b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1732b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1733b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1734b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1735b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1736b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1737b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1738b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1739b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1740b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1741b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1742b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1743b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1744b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1745b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1746b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1747b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1748b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_userrole(CuTest *tc) { 1749b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "userrole", "staff_u", "staff_r", ")", NULL}; 1750b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1751b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1752b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1753b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1754b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1755b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1756b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1757b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1758b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1759b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1760b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1761b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1762b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1763b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1764b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1765b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1766b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1767b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1768b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1769b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1770b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1771b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_type(CuTest *tc) { 1772b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "type", "type_t", ")", NULL}; 1773b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1774b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1775b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1776b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1777b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1778b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1779b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1780b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1781b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1782b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1783b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1784b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1785b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1786b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1787b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1788b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1789b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1790b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1791b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1792b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1793b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1794b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_type_merge(CuTest *tc) { 1795b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "type", "type_t", ")", NULL}; 1796b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1797b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1798b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1799b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1800b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1801b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1802b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1803b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1804b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1805b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1806b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1807b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1808b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1809b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1810b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1811b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1812b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1813b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1814b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_typeattribute(CuTest *tc) { 1815b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typeattribute", "bar", ")", NULL}; 1816b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1817b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1818b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1819b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1820b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1821b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1822b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1823b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1824b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1825b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1826b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1827b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1828b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1829b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1830b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1831b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1832b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1833b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1834b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1835b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1836b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1837b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_typeattribute_merge(CuTest *tc) { 1838b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typeattribute", "bar", ")", NULL}; 1839b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1840b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1841b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1842b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1843b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1844b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1845b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1846b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1847b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1848b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1849b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1850b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1851b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1852b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1853b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1854b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1855b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1856b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1857b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_typealias(CuTest *tc) { 1858b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typealias", ".test.type", "type_t", ")", "(", "type", "test", ")", NULL}; 1859b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1860b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1861b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1862b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1863b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1864b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1865b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1866b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1867b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1868b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1869b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1870b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1871b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1872b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1873b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1874b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1875b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1876b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1877b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1878b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1879b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1880b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_typealias_dup_neg(CuTest *tc) { 1881b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typealias", ".test.type", "type_t", ")", "(", "type", "test", ")", NULL}; 1882b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1883b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1884b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1885b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1886b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1887b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1888b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1889b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1890b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1891b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1892b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1893b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1894b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1895b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1896b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1897b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 1898b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1899b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1900b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_bool(CuTest *tc) { 1901b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "boolean", "foo", "true", ")", NULL}; 1902b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1903b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1904b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1905b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1906b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1907b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1908b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1909b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1910b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1911b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1912b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1913b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1914b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1915b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1916b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1917b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1918b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1919b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1920b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1921b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1922b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1923b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_bool_dup_neg(CuTest *tc) { 1924b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "boolean", "foo", "true", ")", NULL}; 1925b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1926b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1927b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1928b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1929b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1930b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1931b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1932b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1933b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1934b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 1935b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1936b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1937b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1938b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1939b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1940b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 1941b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1942b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1943b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_avrule(CuTest *tc) { 1944b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "allow", "test", "foo", "(", "file", "(", "read", "write", ")", ")", ")", NULL}; 1945b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1946b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1947b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1948b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1949b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1950b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1951b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1952b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1953b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1954b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1955b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1956b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1957b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1958b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1959b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1960b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1961b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1962b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1963b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1964b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1965b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1966b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_type_rule(CuTest *tc) { 1967b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "typetransition", "foo", "bar", "file", "foobar", ")", NULL}; 1968b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1969b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1970b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1971b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1972b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1973b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1974b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1975b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1976b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 1977b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1978b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 1979b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1980b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 1981b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1982b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 1983b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1984b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 1985b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 1986b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 1987b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 1988b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1989b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_sens(CuTest *tc) { 1990b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivity", "s0", ")", NULL}; 1991b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1992b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 1993b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 1994b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1995b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 1996b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 1997b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 1998b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 1999b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2000b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2001b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2002b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2003b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2004b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2005b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2006b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2007b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2008b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2009b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2010b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2011b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2012b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_sens_merge(CuTest *tc) { 2013b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivity", "s0", ")", NULL}; 2014b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2015b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2016b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2017b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2018b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2019b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2020b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2021b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2022b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2023b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2024b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2025b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2026b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2027b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2028b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2029b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2030b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2031b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2032b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_sensalias(CuTest *tc) { 2033b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivityalias", "s0", "alias", ")", NULL}; 2034b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2035b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2036b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2037b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2038b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2039b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2040b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2041b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2042b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2043b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2044b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2045b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2046b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2047b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2048b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2049b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2050b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2051b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2052b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2053b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2054b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2055b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_sensalias_dup_neg(CuTest *tc) { 2056b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivityalias", "s0", "alias", ")", NULL}; 2057b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2058b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2059b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2060b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2061b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2062b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2063b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2064b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2065b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2066b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2067b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2068b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2069b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2070b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2071b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2072b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 2073b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2074b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2075b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_cat(CuTest *tc) { 2076b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "category", "c0", ")", NULL}; 2077b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2078b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2079b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2080b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2081b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2082b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2083b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2084b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2085b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2086b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2087b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2088b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2089b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2090b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2091b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2092b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2093b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2094b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2095b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2096b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2097b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2098b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_cat_merge(CuTest *tc) { 2099b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "category", "c0", ")", NULL}; 2100b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2101b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2102b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2103b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2104b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2105b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2106b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2107b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2108b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2109b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2110b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2111b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2112b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2113b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2114b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2115b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2116b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2117b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2118b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_catalias(CuTest *tc) { 2119b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "categoryalias", "c0", "red", ")", NULL}; 2120b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2121b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2122b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2123b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2124b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2125b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2126b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2127b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2128b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2129b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2130b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2131b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2132b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2133b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2134b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2135b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2136b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2137b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2138b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2139b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2140b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2141b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_catalias_dup_neg(CuTest *tc) { 2142b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "categoryalias", "c0", "red", ")", NULL}; 2143b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2144b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2145b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2146b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2147b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2148b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2149b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2150b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2151b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2152b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2153b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2154b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2155b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2156b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2157b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2158b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 2159b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2160b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2161b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_senscat(CuTest *tc) { 2162b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivity", "s0", ")", 2163b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivity", "s1", ")", 2164b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "dominance", "(", "s0", "s1", ")", ")", 2165b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "category", "c0", ")", 2166b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "category", "c255", ")", 2167b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "categoryorder", "(", "c0", "c255", ")", ")", 2168b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivitycategory", "s1", "(", "c0", "c255", ")", ")", NULL}; 2169b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2170b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2171b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2172b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2173b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2174b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2175b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2176b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2177b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2178b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2179b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2180b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2181b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_senscat *test_senscat; 2182b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_senscat_init(&test_senscat); 2183b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2184b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *parent_node; 2185b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&parent_node); 2186b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->flavor = CIL_SENSCAT; 2187b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->data = test_senscat; 2188b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2189b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(parent_node, test_db2); 2190b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2191b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2192b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2193b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head->next->next->next->next->next->next, &finished, extra_args); 2194b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2195b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2196b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2197b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2198b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_catorder(CuTest *tc) { 2199b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "category", "c0", ")", 2200b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "category", "c255", ")", 2201b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "categoryorder", "(", "c0", "c255", ")", ")", NULL}; 2202b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2203b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2204b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2205b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2206b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2207b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2208b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2209b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2210b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2211b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2212b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2213b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2214b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_catorder *test_catorder; 2215b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_catorder_init(&test_catorder); 2216b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2217b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *parent_node; 2218b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&parent_node); 2219b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->flavor = CIL_CATORDER; 2220b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->data = test_catorder; 2221b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2222b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(parent_node, test_db2); 2223b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2224b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2225b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2226b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head->next->next, &finished, extra_args); 2227b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2228b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2229b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2230b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2231b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_dominance(CuTest *tc) { 2232b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "sensitivity", "s0", ")", 2233b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivity", "s1", ")", 2234b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "sensitivity", "s2", ")", 2235b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "dominance", "(", "s0", "s1", ")", ")", NULL}; 2236b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2237b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2238b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2239b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2240b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2241b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2242b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2243b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2244b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2245b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2246b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2247b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2248b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_sens *test_sens; 2249b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_sens_init(&test_sens); 2250b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2251b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree_node *parent_node; 2252b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_tree_node_init(&parent_node); 2253b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->flavor = CIL_SENS; 2254b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence parent_node->data = test_sens; 2255b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2256b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(parent_node, test_db2); 2257b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2258b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2259b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2260b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head->next->next->next, &finished, extra_args); 2261b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2262b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2263b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2264b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2265b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_level(CuTest *tc) { 2266b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "level", "low", "(", "s0", "(", "c1", ")", ")", ")", NULL}; 2267b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2268b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2269b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2270b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2271b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2272b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2273b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2274b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2275b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2276b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2277b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2278b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2279b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2280b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2281b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2282b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2283b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2284b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2285b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2286b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2287b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2288b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_level_dup_neg(CuTest *tc) { 2289b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "level", "low", "(", "s0", "(", "c1", ")", ")", ")", NULL}; 2290b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2291b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2292b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2293b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2294b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2295b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2296b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2297b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2298b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2299b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2300b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2301b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2302b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2303b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2304b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2305b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 2306b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2307b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2308b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_context(CuTest *tc) { 2309b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "context", "packet_default", "(", "system_u", "object_r", "etc_t", "(", "low", "high", ")", ")", ")", NULL}; 2310b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2311b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2312b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2313b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2314b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2315b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2316b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2317b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2318b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2319b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2320b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2321b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2322b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2323b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2324b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2325b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2326b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2327b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2328b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2329b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2330b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2331b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_context_dup_neg(CuTest *tc) { 2332b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "context", "packet_default", "(", "system_u", "object_r", "etc_t", "(", "low", "high", ")", ")", ")", NULL}; 2333b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2334b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2335b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2336b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2337b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2338b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2339b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2340b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2341b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2342b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2343b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2344b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2345b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2346b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2347b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2348b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 2349b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2350b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2351b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_netifcon(CuTest *tc) { 2352b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "netifcon", "eth0", "if_default", "packet_default", ")", NULL}; 2353b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2354b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2355b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2356b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2357b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2358b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2359b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2360b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2361b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2362b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2363b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2364b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2365b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2366b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2367b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2368b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2369b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2370b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2371b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2372b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2373b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2374b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_call(CuTest *tc) { 2375b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "call", "mm", "(", "foo", ")", ")", NULL}; 2376b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2377b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2378b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2379b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2380b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2381b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2382b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2383b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2384b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2385b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2386b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2387b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2388b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2389b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2390b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2391b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2392b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2393b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2394b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2395b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2396b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2397b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_optional(CuTest *tc) { 2398b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "optional", "opt", "(", "allow", "foo", "bar", "(", "file", "(", "read", ")", ")", ")", ")", NULL}; 2399b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2400b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2401b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2402b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2403b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2404b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2405b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2406b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2407b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2408b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2409b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2410b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2411b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2412b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2413b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2414b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2415b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2416b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2417b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2418b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2419b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2420b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_optional_merge(CuTest *tc) { 2421b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "optional", "opt", "(", "allow", "foo", "bar", "(", "file", "(", "read", ")", ")", ")", ")", NULL}; 2422b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2423b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2424b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2425b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2426b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2427b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2428b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2429b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2430b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2431b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2432b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2433b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2434b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2435b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2436b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2437b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2438b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2439b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2440b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_ipaddr(CuTest *tc) { 2441b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "ipaddr", "ip", "192.168.1.1", ")", NULL}; 2442b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2443b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2444b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2445b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2446b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2447b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2448b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2449b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2450b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2451b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2452b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2453b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2454b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2455b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2456b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2457b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2458b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2459b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2460b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2461b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2462b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2463b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_ipaddr_dup_neg(CuTest *tc) { 2464b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "ipaddr", "ip", "192.168.1.1", ")", NULL}; 2465b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2466b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2467b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2468b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2469b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2470b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2471b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2472b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2473b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2474b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db->ast->root, test_db); 2475b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2476b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2477b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2478b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2479b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2480b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 2481b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2482b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2483b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_boolif(CuTest *tc) { 2484b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "booleanif", "(", "and", "foo", "bar", ")", 2485b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "true", 2486b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence "(", "allow", "foo", "bar", "(", "file", "(", "read", ")", ")", ")", ")", ")", NULL}; 2487b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2488b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2489b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2490b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2491b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2492b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2493b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2494b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2495b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2496b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2497b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2498b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2499b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2500b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2501b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2502b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2503b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2504b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2505b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2506b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2507b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2508b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_mlsconstrain(CuTest *tc) { 2509b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "mlsconstrain", "(", "file", "(", "create", "relabelto", ")", ")", "(", "eq", "l1", "l2", ")", ")", NULL}; 2510b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2511b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2512b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2513b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2514b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2515b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2516b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2517b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2518b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2519b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2520b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2521b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2522b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2523b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2524b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2525b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2526b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2527b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, finished, 0); 2528b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_OK, rc); 2529b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2530b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2531b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_orignull_neg(CuTest *tc) { 2532b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", ")", NULL}; 2533b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2534b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2535b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2536b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2537b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2538b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2539b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2540b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2541b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2542b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2543b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2544b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2545b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = gen_copy_args(test_db2->ast->root, test_db2); 2546b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2547b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2548b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 2549b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2550b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2551b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrencevoid test_cil_copy_node_helper_extraargsnull_neg(CuTest *tc) { 2552b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence char *line[] = {"(", "mlsconstrain", "(", "file", "dir", ")", "(", "create", "relabelto", ")", "(", "eq", "l1", "l2", ")", ")", NULL}; 2553b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2554b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_tree *test_tree; 2555b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence gen_test_tree(&test_tree, line); 2556b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2557b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db; 2558b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db); 2559b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2560b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_db *test_db2; 2561b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_db_init(&test_db2); 2562b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2563b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence struct cil_args_copy *extra_args = NULL; 2564b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2565b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence uint32_t finished = 0; 2566b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2567b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence cil_build_ast(test_db, test_tree->root, test_db->ast->root); 2568b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence 2569b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence int rc = __cil_copy_node_helper(test_db->ast->root->cl_head, &finished, extra_args); 2570b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence CuAssertIntEquals(tc, SEPOL_ERR, rc); 2571b19eafb97feb6389d78e1693f276fc5b10e25bdSteve Lawrence} 2572