Home | History | Annotate | Download | only in test-linker
      1 module linker_test_1 1.0;
      2 
      3 require { 
      4 	class file { read write };
      5 	class lnk_file append;
      6 	role g_b_role_2;
      7 	attribute g_b_attr_3;
      8 	attribute g_b_attr_5;
      9 	attribute o4_b_attr_1;
     10 	type g_b_type_3;
     11 }
     12 
     13 type tag_g_m1;
     14 
     15 #test for type in module and attr in module, added to in module
     16 attribute g_m1_attr_1;
     17 type g_m1_type_1, g_m1_attr_1;
     18 type g_m1_type_2;
     19 typeattribute g_m1_type_2 g_m1_attr_1;
     20 
     21 #add role in module test
     22 role g_m1_role_1;
     23 role g_m1_role_1 types g_m1_type_1;
     24 
     25 # test for attr declared in base, added to in module
     26 type g_m1_type_3;
     27 typeattribute g_m1_type_3 g_b_attr_3;
     28 
     29 # test for attr declared in base, added to in 2 modules
     30 type g_m1_type_4;
     31 typeattribute g_m1_type_4 g_b_attr_5;
     32 
     33 # test for attr declared in base optional, added to in module
     34 type g_m1_type_5;
     35 typeattribute g_m1_type_5 o4_b_attr_1;
     36 
     37 # test for attr declared in module, added to in base optional
     38 attribute g_m1_attr_2;
     39 
     40 #add type to base role test
     41 role g_b_role_2 types g_m1_type_1;
     42 role g_b_role_3;
     43 role g_b_role_3 types g_m1_type_2;
     44 
     45 #add type to base optional role test
     46 role o1_b_role_2;
     47 role o1_b_role_2 types g_m1_type_1;
     48 
     49 #optional base role w/ adds in 2 modules
     50 role o4_b_role_1;
     51 role o4_b_role_1 types g_m1_type_2;
     52 
     53 # attr a added to in base optional, declared/added to in module, added to in other module
     54 attribute g_m1_attr_3;
     55 type g_m1_type_6, g_m1_attr_3;
     56 
     57 # attr a added to in base optional, declared/added in module , added to in other module optional
     58 attribute g_m1_attr_4;
     59 type g_m1_type_7, g_m1_attr_4;
     60 
     61 # alias tests
     62 typealias g_b_type_3 alias g_m_alias_1;
     63 
     64 # single boolean in module
     65 bool g_m1_bool_1 true;
     66 if (g_m1_bool_1) {
     67 	allow g_m1_type_1 g_m1_type_2 : lnk_file append;
     68 }
     69 
     70 
     71 optional {
     72 	require {
     73 		type optional_type;
     74 		attribute g_b_attr_4;
     75 		attribute o1_b_attr_2;
     76 		class lnk_file { ioctl };
     77 	}
     78 
     79 	type tag_o1_m1;
     80 
     81 	attribute o1_m1_attr_1;
     82 	type o1_m1_type_2, o1_m1_attr_1;
     83 	
     84 	type o1_m1_type_1;
     85 	role o1_m1_role_1;
     86 	role o1_m1_role_1 types o1_m1_type_1;
     87 
     88 	type o1_m1_type_3;
     89 	typeattribute o1_m1_type_3 g_b_attr_4;
     90 
     91 	type o1_m1_type_5;
     92 	typeattribute o1_m1_type_5 o1_b_attr_2;	
     93 
     94 	bool o1_m1_bool_1 false;
     95 	if (o1_m1_bool_1) {
     96 		allow o1_m1_type_2 o1_m1_type_1 : lnk_file ioctl;
     97 	}
     98 	
     99 }
    100 
    101 optional {
    102 	require {
    103 		type optional_type;
    104 		#role g_b_role_4; // This causes a bug where the role scope doesn't get copied into base
    105 	}
    106 	
    107 	type tag_o2_m1;
    108 
    109 	role g_b_role_4;
    110 	role g_b_role_4 types g_m1_type_2;
    111 }
    112 
    113 optional {
    114 	require {
    115 		attribute g_b_attr_6;
    116 	}
    117 
    118 	type tag_o3_m1;
    119 
    120 	type o3_m1_type_1;	
    121 	role o3_b_role_1;
    122         role o3_b_role_1 types o3_m1_type_1;
    123 
    124 	type o3_m1_type_2, g_b_attr_6;
    125 
    126 	attribute o3_m1_attr_1;	
    127 
    128 	# attr a added to in base optional, declared/added in module optional, added to in other module
    129 	attribute o3_m1_attr_2;
    130 	type o3_m1_type_3, o3_m1_attr_2;
    131 
    132 }
    133 
    134 optional {
    135 	require {
    136 		type enable_optional;
    137 	}
    138 	type tag_o4_m1;
    139 
    140 	attribute o4_m1_attr_1;
    141 	type o4_m1_type_1;
    142 	typeattribute o4_m1_type_1 o4_m1_attr_1;
    143 
    144 
    145 }
    146