| module linker_test_1 1.0; |
| |
| require { |
| class file { read write }; |
| class lnk_file append; |
| role g_b_role_2; |
| attribute g_b_attr_3; |
| attribute g_b_attr_5; |
| attribute o4_b_attr_1; |
| type g_b_type_3; |
| } |
| |
| type tag_g_m1; |
| |
| #test for type in module and attr in module, added to in module |
| attribute g_m1_attr_1; |
| type g_m1_type_1, g_m1_attr_1; |
| type g_m1_type_2; |
| typeattribute g_m1_type_2 g_m1_attr_1; |
| |
| #add role in module test |
| role g_m1_role_1; |
| role g_m1_role_1 types g_m1_type_1; |
| |
| # test for attr declared in base, added to in module |
| type g_m1_type_3; |
| typeattribute g_m1_type_3 g_b_attr_3; |
| |
| # test for attr declared in base, added to in 2 modules |
| type g_m1_type_4; |
| typeattribute g_m1_type_4 g_b_attr_5; |
| |
| # test for attr declared in base optional, added to in module |
| type g_m1_type_5; |
| typeattribute g_m1_type_5 o4_b_attr_1; |
| |
| # test for attr declared in module, added to in base optional |
| attribute g_m1_attr_2; |
| |
| #add type to base role test |
| role g_b_role_2 types g_m1_type_1; |
| role g_b_role_3; |
| role g_b_role_3 types g_m1_type_2; |
| |
| #add type to base optional role test |
| role o1_b_role_2; |
| role o1_b_role_2 types g_m1_type_1; |
| |
| #optional base role w/ adds in 2 modules |
| role o4_b_role_1; |
| role o4_b_role_1 types g_m1_type_2; |
| |
| # attr a added to in base optional, declared/added to in module, added to in other module |
| attribute g_m1_attr_3; |
| type g_m1_type_6, g_m1_attr_3; |
| |
| # attr a added to in base optional, declared/added in module , added to in other module optional |
| attribute g_m1_attr_4; |
| type g_m1_type_7, g_m1_attr_4; |
| |
| # alias tests |
| typealias g_b_type_3 alias g_m_alias_1; |
| |
| # single boolean in module |
| bool g_m1_bool_1 true; |
| if (g_m1_bool_1) { |
| allow g_m1_type_1 g_m1_type_2 : lnk_file append; |
| } |
| |
| |
| optional { |
| require { |
| type optional_type; |
| attribute g_b_attr_4; |
| attribute o1_b_attr_2; |
| class lnk_file { ioctl }; |
| } |
| |
| type tag_o1_m1; |
| |
| attribute o1_m1_attr_1; |
| type o1_m1_type_2, o1_m1_attr_1; |
| |
| type o1_m1_type_1; |
| role o1_m1_role_1; |
| role o1_m1_role_1 types o1_m1_type_1; |
| |
| type o1_m1_type_3; |
| typeattribute o1_m1_type_3 g_b_attr_4; |
| |
| type o1_m1_type_5; |
| typeattribute o1_m1_type_5 o1_b_attr_2; |
| |
| bool o1_m1_bool_1 false; |
| if (o1_m1_bool_1) { |
| allow o1_m1_type_2 o1_m1_type_1 : lnk_file ioctl; |
| } |
| |
| } |
| |
| optional { |
| require { |
| type optional_type; |
| #role g_b_role_4; // This causes a bug where the role scope doesn't get copied into base |
| } |
| |
| type tag_o2_m1; |
| |
| role g_b_role_4; |
| role g_b_role_4 types g_m1_type_2; |
| } |
| |
| optional { |
| require { |
| attribute g_b_attr_6; |
| } |
| |
| type tag_o3_m1; |
| |
| type o3_m1_type_1; |
| role o3_b_role_1; |
| role o3_b_role_1 types o3_m1_type_1; |
| |
| type o3_m1_type_2, g_b_attr_6; |
| |
| attribute o3_m1_attr_1; |
| |
| # attr a added to in base optional, declared/added in module optional, added to in other module |
| attribute o3_m1_attr_2; |
| type o3_m1_type_3, o3_m1_attr_2; |
| |
| } |
| |
| optional { |
| require { |
| type enable_optional; |
| } |
| type tag_o4_m1; |
| |
| attribute o4_m1_attr_1; |
| type o4_m1_type_1; |
| typeattribute o4_m1_type_1 o4_m1_attr_1; |
| |
| |
| } |