1*2d543d20SAndroid Build Coastguard Worker(class CLASS (PERM)) 2*2d543d20SAndroid Build Coastguard Worker(classorder (CLASS)) 3*2d543d20SAndroid Build Coastguard Worker(sid SID) 4*2d543d20SAndroid Build Coastguard Worker(sidorder (SID)) 5*2d543d20SAndroid Build Coastguard Worker(user USER) 6*2d543d20SAndroid Build Coastguard Worker(role ROLE) 7*2d543d20SAndroid Build Coastguard Worker(type TYPE) 8*2d543d20SAndroid Build Coastguard Worker(category CAT) 9*2d543d20SAndroid Build Coastguard Worker(categoryorder (CAT)) 10*2d543d20SAndroid Build Coastguard Worker(sensitivity SENS) 11*2d543d20SAndroid Build Coastguard Worker(sensitivityorder (SENS)) 12*2d543d20SAndroid Build Coastguard Worker(sensitivitycategory SENS (CAT)) 13*2d543d20SAndroid Build Coastguard Worker(allow TYPE self (CLASS (PERM))) 14*2d543d20SAndroid Build Coastguard Worker(roletype ROLE TYPE) 15*2d543d20SAndroid Build Coastguard Worker(userrole USER ROLE) 16*2d543d20SAndroid Build Coastguard Worker(userlevel USER (SENS)) 17*2d543d20SAndroid Build Coastguard Worker(userrange USER ((SENS)(SENS (CAT)))) 18*2d543d20SAndroid Build Coastguard Worker(sidcontext SID (USER ROLE TYPE ((SENS)(SENS)))) 19*2d543d20SAndroid Build Coastguard Worker 20*2d543d20SAndroid Build Coastguard Worker(class c1 (p1a p1b p1c)) 21*2d543d20SAndroid Build Coastguard Worker(class c2 (p2a p2b p2c)) 22*2d543d20SAndroid Build Coastguard Worker(class c3 (p3a p3b p3c)) 23*2d543d20SAndroid Build Coastguard Worker 24*2d543d20SAndroid Build Coastguard Worker(classorder (CLASS c1 c2 c3)) 25*2d543d20SAndroid Build Coastguard Worker 26*2d543d20SAndroid Build Coastguard Worker(classpermission cp1) 27*2d543d20SAndroid Build Coastguard Worker(classpermissionset cp1 (c1 (p1a p1b))) 28*2d543d20SAndroid Build Coastguard Worker(classpermissionset cp1 (c2 (p2a))) 29*2d543d20SAndroid Build Coastguard Worker 30*2d543d20SAndroid Build Coastguard Worker(classmap cm1 (mp1)) 31*2d543d20SAndroid Build Coastguard Worker(classmapping cm1 mp1 32*2d543d20SAndroid Build Coastguard Worker (c1 (p1a))) 33*2d543d20SAndroid Build Coastguard Worker 34*2d543d20SAndroid Build Coastguard Worker(boolean b_b1 false) 35*2d543d20SAndroid Build Coastguard Worker(boolean b_b2 false) 36*2d543d20SAndroid Build Coastguard Worker(boolean b_b3 false) 37*2d543d20SAndroid Build Coastguard Worker 38*2d543d20SAndroid Build Coastguard Worker 39*2d543d20SAndroid Build Coastguard Worker(type b_ta) 40*2d543d20SAndroid Build Coastguard Worker(type b_tb) 41*2d543d20SAndroid Build Coastguard Worker(type b_tc) 42*2d543d20SAndroid Build Coastguard Worker(type b_td) 43*2d543d20SAndroid Build Coastguard Worker 44*2d543d20SAndroid Build Coastguard Worker 45*2d543d20SAndroid Build Coastguard Worker;; All of these rules should pass the bounds check 46*2d543d20SAndroid Build Coastguard Worker(type b_t1) 47*2d543d20SAndroid Build Coastguard Worker(type b_t1_c) 48*2d543d20SAndroid Build Coastguard Worker(typebounds b_t1 b_t1_c) 49*2d543d20SAndroid Build Coastguard Worker 50*2d543d20SAndroid Build Coastguard Worker(allow b_t1 self (CLASS (PERM))) 51*2d543d20SAndroid Build Coastguard Worker(allow b_t1_c self (CLASS (PERM))) 52*2d543d20SAndroid Build Coastguard Worker(allow b_t1 b_ta (CLASS (PERM))) 53*2d543d20SAndroid Build Coastguard Worker(allow b_t1_c b_ta (CLASS (PERM))) 54*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_t1 (CLASS (PERM))) 55*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_t1_c (CLASS (PERM))) 56*2d543d20SAndroid Build Coastguard Worker 57*2d543d20SAndroid Build Coastguard Worker(booleanif b_b1 58*2d543d20SAndroid Build Coastguard Worker (false 59*2d543d20SAndroid Build Coastguard Worker (allow b_t1 b_tb (CLASS (PERM))) 60*2d543d20SAndroid Build Coastguard Worker (allow b_t1_c b_tb (CLASS (PERM))) 61*2d543d20SAndroid Build Coastguard Worker (allow b_tb b_t1 (CLASS (PERM))) 62*2d543d20SAndroid Build Coastguard Worker (allow b_tb b_t1_c (CLASS (PERM))))) 63*2d543d20SAndroid Build Coastguard Worker 64*2d543d20SAndroid Build Coastguard Worker(allow b_t1 b_tc (CLASS (PERM))) 65*2d543d20SAndroid Build Coastguard Worker(allow b_tc b_t1 (CLASS (PERM))) 66*2d543d20SAndroid Build Coastguard Worker(booleanif b_b2 67*2d543d20SAndroid Build Coastguard Worker (false 68*2d543d20SAndroid Build Coastguard Worker (allow b_t1_c b_tc (CLASS (PERM))) 69*2d543d20SAndroid Build Coastguard Worker (allow b_tc b_t1_c (CLASS (PERM))))) 70*2d543d20SAndroid Build Coastguard Worker 71*2d543d20SAndroid Build Coastguard Worker(allow b_t1_c b_td (CLASS (PERM))) 72*2d543d20SAndroid Build Coastguard Worker(allow b_td b_t1_c (CLASS (PERM))) 73*2d543d20SAndroid Build Coastguard Worker(booleanif b_b3 74*2d543d20SAndroid Build Coastguard Worker (true 75*2d543d20SAndroid Build Coastguard Worker (allow b_t1 b_td (CLASS (PERM))) 76*2d543d20SAndroid Build Coastguard Worker (allow b_td b_t1 (CLASS (PERM)))) 77*2d543d20SAndroid Build Coastguard Worker (false 78*2d543d20SAndroid Build Coastguard Worker (allow b_t1 b_td (CLASS (PERM))) 79*2d543d20SAndroid Build Coastguard Worker (allow b_td b_t1 (CLASS (PERM))))) 80*2d543d20SAndroid Build Coastguard Worker 81*2d543d20SAndroid Build Coastguard Worker 82*2d543d20SAndroid Build Coastguard Worker;; All of these rules should pass the bounds check 83*2d543d20SAndroid Build Coastguard Worker(type b_t2) 84*2d543d20SAndroid Build Coastguard Worker(type b_t2_c) 85*2d543d20SAndroid Build Coastguard Worker(typebounds b_t2 b_t2_c) 86*2d543d20SAndroid Build Coastguard Worker(typeattribute b_a2) 87*2d543d20SAndroid Build Coastguard Worker(typeattribute b_a2_c) 88*2d543d20SAndroid Build Coastguard Worker(typeattributeset b_a2 b_t2) 89*2d543d20SAndroid Build Coastguard Worker(typeattributeset b_a2_c b_t2_c) 90*2d543d20SAndroid Build Coastguard Worker 91*2d543d20SAndroid Build Coastguard Worker(allow b_a2 self (CLASS (PERM))) 92*2d543d20SAndroid Build Coastguard Worker(allow b_a2_c self (CLASS (PERM))) 93*2d543d20SAndroid Build Coastguard Worker(allow b_a2 b_ta (CLASS (PERM))) 94*2d543d20SAndroid Build Coastguard Worker(allow b_a2_c b_ta (CLASS (PERM))) 95*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_a2 (CLASS (PERM))) 96*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_a2_c (CLASS (PERM))) 97*2d543d20SAndroid Build Coastguard Worker 98*2d543d20SAndroid Build Coastguard Worker(booleanif b_b1 99*2d543d20SAndroid Build Coastguard Worker (false 100*2d543d20SAndroid Build Coastguard Worker (allow b_a2 b_tb (CLASS (PERM))) 101*2d543d20SAndroid Build Coastguard Worker (allow b_a2_c b_tb (CLASS (PERM))) 102*2d543d20SAndroid Build Coastguard Worker (allow b_tb b_a2 (CLASS (PERM))) 103*2d543d20SAndroid Build Coastguard Worker (allow b_tb b_a2_c (CLASS (PERM))))) 104*2d543d20SAndroid Build Coastguard Worker 105*2d543d20SAndroid Build Coastguard Worker(allow b_a2 b_tc (CLASS (PERM))) 106*2d543d20SAndroid Build Coastguard Worker(allow b_tc b_a2 (CLASS (PERM))) 107*2d543d20SAndroid Build Coastguard Worker(booleanif b_b2 108*2d543d20SAndroid Build Coastguard Worker (false 109*2d543d20SAndroid Build Coastguard Worker (allow b_a2_c b_tc (CLASS (PERM))) 110*2d543d20SAndroid Build Coastguard Worker (allow b_tc b_a2_c (CLASS (PERM))))) 111*2d543d20SAndroid Build Coastguard Worker 112*2d543d20SAndroid Build Coastguard Worker(allow b_a2_c b_td (CLASS (PERM))) 113*2d543d20SAndroid Build Coastguard Worker(allow b_td b_a2_c (CLASS (PERM))) 114*2d543d20SAndroid Build Coastguard Worker(booleanif b_b3 115*2d543d20SAndroid Build Coastguard Worker (true 116*2d543d20SAndroid Build Coastguard Worker (allow b_a2 b_td (CLASS (PERM))) 117*2d543d20SAndroid Build Coastguard Worker (allow b_td b_a2 (CLASS (PERM)))) 118*2d543d20SAndroid Build Coastguard Worker (false 119*2d543d20SAndroid Build Coastguard Worker (allow b_a2 b_td (CLASS (PERM))) 120*2d543d20SAndroid Build Coastguard Worker (allow b_td b_a2 (CLASS (PERM))))) 121*2d543d20SAndroid Build Coastguard Worker 122*2d543d20SAndroid Build Coastguard Worker 123*2d543d20SAndroid Build Coastguard Worker;; All of these rules should fail the bounds check 124*2d543d20SAndroid Build Coastguard Worker(type b_t3) 125*2d543d20SAndroid Build Coastguard Worker(type b_t3_c) 126*2d543d20SAndroid Build Coastguard Worker(typebounds b_t3 b_t3_c) 127*2d543d20SAndroid Build Coastguard Worker 128*2d543d20SAndroid Build Coastguard Worker(allow b_t3 self (CLASS (PERM))) 129*2d543d20SAndroid Build Coastguard Worker(allow b_t3_c self (c1 (p1a))) 130*2d543d20SAndroid Build Coastguard Worker(allow b_t3 b_ta (CLASS (PERM))) 131*2d543d20SAndroid Build Coastguard Worker(allow b_t3_c b_ta (c1 (p1a))) 132*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_t3 (CLASS (PERM))) 133*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_t3_c (c1 (p1a))) 134*2d543d20SAndroid Build Coastguard Worker 135*2d543d20SAndroid Build Coastguard Worker(booleanif b_b1 136*2d543d20SAndroid Build Coastguard Worker (false 137*2d543d20SAndroid Build Coastguard Worker (allow b_t3_c b_tb (c1 (p1a))) 138*2d543d20SAndroid Build Coastguard Worker (allow b_tb b_t3_c (c1 (p1a))))) 139*2d543d20SAndroid Build Coastguard Worker 140*2d543d20SAndroid Build Coastguard Worker(booleanif b_b2 141*2d543d20SAndroid Build Coastguard Worker (true 142*2d543d20SAndroid Build Coastguard Worker (allow b_t3_c b_tc (c1 (p1a))) 143*2d543d20SAndroid Build Coastguard Worker (allow b_tc b_t3_c (c1 (p1a)))) 144*2d543d20SAndroid Build Coastguard Worker (false 145*2d543d20SAndroid Build Coastguard Worker (allow b_t3 b_tc (c1 (p1a))) 146*2d543d20SAndroid Build Coastguard Worker (allow b_tc b_t3 (c1 (p1a))))) 147*2d543d20SAndroid Build Coastguard Worker 148*2d543d20SAndroid Build Coastguard Worker(allow b_t3_c b_td (c1 (p1a))) 149*2d543d20SAndroid Build Coastguard Worker(allow b_td b_t3_c (c1 (p1a))) 150*2d543d20SAndroid Build Coastguard Worker(booleanif b_b3 151*2d543d20SAndroid Build Coastguard Worker (false 152*2d543d20SAndroid Build Coastguard Worker (allow b_t3 b_td (c1 (p1a))) 153*2d543d20SAndroid Build Coastguard Worker (allow b_td b_t3 (c1 (p1a))))) 154*2d543d20SAndroid Build Coastguard Worker 155*2d543d20SAndroid Build Coastguard Worker 156*2d543d20SAndroid Build Coastguard Worker;; All of these rules should fail the bounds check 157*2d543d20SAndroid Build Coastguard Worker(type b_t4) 158*2d543d20SAndroid Build Coastguard Worker(type b_t4_c) 159*2d543d20SAndroid Build Coastguard Worker(typebounds b_t4 b_t4_c) 160*2d543d20SAndroid Build Coastguard Worker(typeattribute b_a4) 161*2d543d20SAndroid Build Coastguard Worker(typeattribute b_a4_c) 162*2d543d20SAndroid Build Coastguard Worker(typeattributeset b_a4 b_t4) 163*2d543d20SAndroid Build Coastguard Worker(typeattributeset b_a4_c b_t4_c) 164*2d543d20SAndroid Build Coastguard Worker 165*2d543d20SAndroid Build Coastguard Worker(allow b_a4 self (CLASS (PERM))) 166*2d543d20SAndroid Build Coastguard Worker(allow b_a4_c self (c1 (p1a))) 167*2d543d20SAndroid Build Coastguard Worker(allow b_a4 b_ta (CLASS (PERM))) 168*2d543d20SAndroid Build Coastguard Worker(allow b_a4_c b_ta (c1 (p1a))) 169*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_a4 (CLASS (PERM))) 170*2d543d20SAndroid Build Coastguard Worker(allow b_ta b_a4_c (c1 (p1a))) 171*2d543d20SAndroid Build Coastguard Worker 172*2d543d20SAndroid Build Coastguard Worker(booleanif b_b1 173*2d543d20SAndroid Build Coastguard Worker (false 174*2d543d20SAndroid Build Coastguard Worker (allow b_a4_c b_tb (c1 (p1a))) 175*2d543d20SAndroid Build Coastguard Worker (allow b_tb b_a4_c (c1 (p1a))))) 176*2d543d20SAndroid Build Coastguard Worker 177*2d543d20SAndroid Build Coastguard Worker(booleanif b_b2 178*2d543d20SAndroid Build Coastguard Worker (true 179*2d543d20SAndroid Build Coastguard Worker (allow b_a4_c b_tc (c1 (p1a))) 180*2d543d20SAndroid Build Coastguard Worker (allow b_tc b_a4_c (c1 (p1a)))) 181*2d543d20SAndroid Build Coastguard Worker (false 182*2d543d20SAndroid Build Coastguard Worker (allow b_a4 b_tc (c1 (p1a))) 183*2d543d20SAndroid Build Coastguard Worker (allow b_tc b_a4 (c1 (p1a))))) 184*2d543d20SAndroid Build Coastguard Worker 185*2d543d20SAndroid Build Coastguard Worker(allow b_a4_c b_td (c1 (p1a))) 186*2d543d20SAndroid Build Coastguard Worker(allow b_td b_a4_c (c1 (p1a))) 187*2d543d20SAndroid Build Coastguard Worker(booleanif b_b3 188*2d543d20SAndroid Build Coastguard Worker (false 189*2d543d20SAndroid Build Coastguard Worker (allow b_a4 b_td (c1 (p1a))) 190*2d543d20SAndroid Build Coastguard Worker (allow b_td b_a4 (c1 (p1a))))) 191*2d543d20SAndroid Build Coastguard Worker 192*2d543d20SAndroid Build Coastguard Worker 193*2d543d20SAndroid Build Coastguard Worker;; Marked rules should fail, all others should pass 194*2d543d20SAndroid Build Coastguard Worker(type b_t5) 195*2d543d20SAndroid Build Coastguard Worker(type b_t5_c) 196*2d543d20SAndroid Build Coastguard Worker(typebounds b_t5 b_t5_c) 197*2d543d20SAndroid Build Coastguard Worker 198*2d543d20SAndroid Build Coastguard Worker(allow b_t5 b_ta cp1) 199*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_ta (c1 (p1a))) 200*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_ta (c2 (p2a))) 201*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_ta (c2 (p2b))) ;; Fail 202*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_ta (c3 (p3a))) ;; Fail 203*2d543d20SAndroid Build Coastguard Worker 204*2d543d20SAndroid Build Coastguard Worker(allow b_t5 b_tb (c1 (p1a p1b))) 205*2d543d20SAndroid Build Coastguard Worker(allow b_t5 b_tb (c2 (p2a))) 206*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_tb cp1) 207*2d543d20SAndroid Build Coastguard Worker 208*2d543d20SAndroid Build Coastguard Worker(allow b_t5 b_tc (cm1 (mp1))) 209*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_tc (c1 (p1a))) 210*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_tc (c1 (p1b))) ;; Fail 211*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_tc (c2 (p2a))) ;; Fail 212*2d543d20SAndroid Build Coastguard Worker 213*2d543d20SAndroid Build Coastguard Worker(allow b_t5 b_tc (c1 (p1a))) 214*2d543d20SAndroid Build Coastguard Worker(allow b_t5_c b_tc (cm1 (mp1))) 215*2d543d20SAndroid Build Coastguard Worker 216*2d543d20SAndroid Build Coastguard Worker 217*2d543d20SAndroid Build Coastguard Worker;; Marked rules should fail, all others should pass 218*2d543d20SAndroid Build Coastguard Worker(type b_t6a) 219*2d543d20SAndroid Build Coastguard Worker(type b_t6a_c) 220*2d543d20SAndroid Build Coastguard Worker(type b_t6b) 221*2d543d20SAndroid Build Coastguard Worker(type b_t6b_c) 222*2d543d20SAndroid Build Coastguard Worker(typebounds b_t6a b_t6a_c) 223*2d543d20SAndroid Build Coastguard Worker(typebounds b_t6b b_t6b_c) 224*2d543d20SAndroid Build Coastguard Worker 225*2d543d20SAndroid Build Coastguard Worker(allow b_t6a b_t6b (CLASS (PERM))) 226*2d543d20SAndroid Build Coastguard Worker(allow b_t6a_c b_t6b_c (CLASS (PERM))) 227*2d543d20SAndroid Build Coastguard Worker 228*2d543d20SAndroid Build Coastguard Worker;; Needs: (allow b_t6a b_t6b (c1 (p1a))) 229*2d543d20SAndroid Build Coastguard Worker(allow b_t6a_c b_t6b (c1 (p1a))) ;; Fail 230*2d543d20SAndroid Build Coastguard Worker(allow b_t6a_c b_t6b_c (c1 (p1a))) ;; Fail 231*2d543d20SAndroid Build Coastguard Worker 232*2d543d20SAndroid Build Coastguard Worker;; Needs: (allow b_t6a b_t6b (c2 (p2a))) 233*2d543d20SAndroid Build Coastguard Worker(allow b_t6a b_t6b_c (c2 (p2a))) ;; Fail 234*2d543d20SAndroid Build Coastguard Worker(allow b_t6a_c b_t6b (c2 (p2a))) ;; Fail 235*2d543d20SAndroid Build Coastguard Worker(allow b_t6a_c b_t6b_c (c2 (p2a))) 236*2d543d20SAndroid Build Coastguard Worker 237*2d543d20SAndroid Build Coastguard Worker;; Needs: (allow b_t6a b_t6b (c3 (p3c))) 238*2d543d20SAndroid Build Coastguard Worker(allow b_t6a b_t6b (c3 (p3a p3b))) 239*2d543d20SAndroid Build Coastguard Worker(allow b_t6a b_t6b_c (c3 (p3b p3c))) ;; Fail 240*2d543d20SAndroid Build Coastguard Worker(allow b_t6a_c b_t6b (c3 (p3a p3c))) ;; Fail 241*2d543d20SAndroid Build Coastguard Worker(allow b_t6a_c b_t6b_c (c3 (p3a p3b p3c))) ;; Fail 242