| (class CLASS (PERM)) |
| (classorder (CLASS)) |
| (sid SID) |
| (sidorder (SID)) |
| (user USER) |
| (role ROLE) |
| (type TYPE) |
| (category CAT) |
| (categoryorder (CAT)) |
| (sensitivity SENS) |
| (sensitivityorder (SENS)) |
| (sensitivitycategory SENS (CAT)) |
| (allow TYPE self (CLASS (PERM))) |
| (roletype ROLE TYPE) |
| (userrole USER ROLE) |
| (userlevel USER (SENS)) |
| (userrange USER ((SENS)(SENS (CAT)))) |
| (sidcontext SID (USER ROLE TYPE ((SENS)(SENS)))) |
| |
| (class c1 (p1a p1b p1c)) |
| (class c2 (p2a p2b p2c)) |
| (class c3 (p3a p3b p3c)) |
| |
| (classorder (CLASS c1 c2 c3)) |
| |
| (classpermission cp1) |
| (classpermissionset cp1 (c1 (p1a p1b))) |
| (classpermissionset cp1 (c2 (p2a))) |
| |
| (classmap cm1 (mp1)) |
| (classmapping cm1 mp1 |
| (c1 (p1a))) |
| |
| (boolean b_b1 false) |
| (boolean b_b2 false) |
| (boolean b_b3 false) |
| |
| |
| (type b_ta) |
| (type b_tb) |
| (type b_tc) |
| (type b_td) |
| |
| |
| ;; All of these rules should pass the bounds check |
| (type b_t1) |
| (type b_t1_c) |
| (typebounds b_t1 b_t1_c) |
| |
| (allow b_t1 self (CLASS (PERM))) |
| (allow b_t1_c self (CLASS (PERM))) |
| (allow b_t1 b_ta (CLASS (PERM))) |
| (allow b_t1_c b_ta (CLASS (PERM))) |
| (allow b_ta b_t1 (CLASS (PERM))) |
| (allow b_ta b_t1_c (CLASS (PERM))) |
| |
| (booleanif b_b1 |
| (false |
| (allow b_t1 b_tb (CLASS (PERM))) |
| (allow b_t1_c b_tb (CLASS (PERM))) |
| (allow b_tb b_t1 (CLASS (PERM))) |
| (allow b_tb b_t1_c (CLASS (PERM))))) |
| |
| (allow b_t1 b_tc (CLASS (PERM))) |
| (allow b_tc b_t1 (CLASS (PERM))) |
| (booleanif b_b2 |
| (false |
| (allow b_t1_c b_tc (CLASS (PERM))) |
| (allow b_tc b_t1_c (CLASS (PERM))))) |
| |
| (allow b_t1_c b_td (CLASS (PERM))) |
| (allow b_td b_t1_c (CLASS (PERM))) |
| (booleanif b_b3 |
| (true |
| (allow b_t1 b_td (CLASS (PERM))) |
| (allow b_td b_t1 (CLASS (PERM)))) |
| (false |
| (allow b_t1 b_td (CLASS (PERM))) |
| (allow b_td b_t1 (CLASS (PERM))))) |
| |
| |
| ;; All of these rules should pass the bounds check |
| (type b_t2) |
| (type b_t2_c) |
| (typebounds b_t2 b_t2_c) |
| (typeattribute b_a2) |
| (typeattribute b_a2_c) |
| (typeattributeset b_a2 b_t2) |
| (typeattributeset b_a2_c b_t2_c) |
| |
| (allow b_a2 self (CLASS (PERM))) |
| (allow b_a2_c self (CLASS (PERM))) |
| (allow b_a2 b_ta (CLASS (PERM))) |
| (allow b_a2_c b_ta (CLASS (PERM))) |
| (allow b_ta b_a2 (CLASS (PERM))) |
| (allow b_ta b_a2_c (CLASS (PERM))) |
| |
| (booleanif b_b1 |
| (false |
| (allow b_a2 b_tb (CLASS (PERM))) |
| (allow b_a2_c b_tb (CLASS (PERM))) |
| (allow b_tb b_a2 (CLASS (PERM))) |
| (allow b_tb b_a2_c (CLASS (PERM))))) |
| |
| (allow b_a2 b_tc (CLASS (PERM))) |
| (allow b_tc b_a2 (CLASS (PERM))) |
| (booleanif b_b2 |
| (false |
| (allow b_a2_c b_tc (CLASS (PERM))) |
| (allow b_tc b_a2_c (CLASS (PERM))))) |
| |
| (allow b_a2_c b_td (CLASS (PERM))) |
| (allow b_td b_a2_c (CLASS (PERM))) |
| (booleanif b_b3 |
| (true |
| (allow b_a2 b_td (CLASS (PERM))) |
| (allow b_td b_a2 (CLASS (PERM)))) |
| (false |
| (allow b_a2 b_td (CLASS (PERM))) |
| (allow b_td b_a2 (CLASS (PERM))))) |
| |
| |
| ;; All of these rules should fail the bounds check |
| (type b_t3) |
| (type b_t3_c) |
| (typebounds b_t3 b_t3_c) |
| |
| (allow b_t3 self (CLASS (PERM))) |
| (allow b_t3_c self (c1 (p1a))) |
| (allow b_t3 b_ta (CLASS (PERM))) |
| (allow b_t3_c b_ta (c1 (p1a))) |
| (allow b_ta b_t3 (CLASS (PERM))) |
| (allow b_ta b_t3_c (c1 (p1a))) |
| |
| (booleanif b_b1 |
| (false |
| (allow b_t3_c b_tb (c1 (p1a))) |
| (allow b_tb b_t3_c (c1 (p1a))))) |
| |
| (booleanif b_b2 |
| (true |
| (allow b_t3_c b_tc (c1 (p1a))) |
| (allow b_tc b_t3_c (c1 (p1a)))) |
| (false |
| (allow b_t3 b_tc (c1 (p1a))) |
| (allow b_tc b_t3 (c1 (p1a))))) |
| |
| (allow b_t3_c b_td (c1 (p1a))) |
| (allow b_td b_t3_c (c1 (p1a))) |
| (booleanif b_b3 |
| (false |
| (allow b_t3 b_td (c1 (p1a))) |
| (allow b_td b_t3 (c1 (p1a))))) |
| |
| |
| ;; All of these rules should fail the bounds check |
| (type b_t4) |
| (type b_t4_c) |
| (typebounds b_t4 b_t4_c) |
| (typeattribute b_a4) |
| (typeattribute b_a4_c) |
| (typeattributeset b_a4 b_t4) |
| (typeattributeset b_a4_c b_t4_c) |
| |
| (allow b_a4 self (CLASS (PERM))) |
| (allow b_a4_c self (c1 (p1a))) |
| (allow b_a4 b_ta (CLASS (PERM))) |
| (allow b_a4_c b_ta (c1 (p1a))) |
| (allow b_ta b_a4 (CLASS (PERM))) |
| (allow b_ta b_a4_c (c1 (p1a))) |
| |
| (booleanif b_b1 |
| (false |
| (allow b_a4_c b_tb (c1 (p1a))) |
| (allow b_tb b_a4_c (c1 (p1a))))) |
| |
| (booleanif b_b2 |
| (true |
| (allow b_a4_c b_tc (c1 (p1a))) |
| (allow b_tc b_a4_c (c1 (p1a)))) |
| (false |
| (allow b_a4 b_tc (c1 (p1a))) |
| (allow b_tc b_a4 (c1 (p1a))))) |
| |
| (allow b_a4_c b_td (c1 (p1a))) |
| (allow b_td b_a4_c (c1 (p1a))) |
| (booleanif b_b3 |
| (false |
| (allow b_a4 b_td (c1 (p1a))) |
| (allow b_td b_a4 (c1 (p1a))))) |
| |
| |
| ;; Marked rules should fail, all others should pass |
| (type b_t5) |
| (type b_t5_c) |
| (typebounds b_t5 b_t5_c) |
| |
| (allow b_t5 b_ta cp1) |
| (allow b_t5_c b_ta (c1 (p1a))) |
| (allow b_t5_c b_ta (c2 (p2a))) |
| (allow b_t5_c b_ta (c2 (p2b))) ;; Fail |
| (allow b_t5_c b_ta (c3 (p3a))) ;; Fail |
| |
| (allow b_t5 b_tb (c1 (p1a p1b))) |
| (allow b_t5 b_tb (c2 (p2a))) |
| (allow b_t5_c b_tb cp1) |
| |
| (allow b_t5 b_tc (cm1 (mp1))) |
| (allow b_t5_c b_tc (c1 (p1a))) |
| (allow b_t5_c b_tc (c1 (p1b))) ;; Fail |
| (allow b_t5_c b_tc (c2 (p2a))) ;; Fail |
| |
| (allow b_t5 b_tc (c1 (p1a))) |
| (allow b_t5_c b_tc (cm1 (mp1))) |
| |
| |
| ;; Marked rules should fail, all others should pass |
| (type b_t6a) |
| (type b_t6a_c) |
| (type b_t6b) |
| (type b_t6b_c) |
| (typebounds b_t6a b_t6a_c) |
| (typebounds b_t6b b_t6b_c) |
| |
| (allow b_t6a b_t6b (CLASS (PERM))) |
| (allow b_t6a_c b_t6b_c (CLASS (PERM))) |
| |
| ;; Needs: (allow b_t6a b_t6b (c1 (p1a))) |
| (allow b_t6a_c b_t6b (c1 (p1a))) ;; Fail |
| (allow b_t6a_c b_t6b_c (c1 (p1a))) ;; Fail |
| |
| ;; Needs: (allow b_t6a b_t6b (c2 (p2a))) |
| (allow b_t6a b_t6b_c (c2 (p2a))) ;; Fail |
| (allow b_t6a_c b_t6b (c2 (p2a))) ;; Fail |
| (allow b_t6a_c b_t6b_c (c2 (p2a))) |
| |
| ;; Needs: (allow b_t6a b_t6b (c3 (p3c))) |
| (allow b_t6a b_t6b (c3 (p3a p3b))) |
| (allow b_t6a b_t6b_c (c3 (p3b p3c))) ;; Fail |
| (allow b_t6a_c b_t6b (c3 (p3a p3c))) ;; Fail |
| (allow b_t6a_c b_t6b_c (c3 (p3a p3b p3c))) ;; Fail |