1*2d543d20SAndroid Build Coastguard Worker;; Minimum stuff 2*2d543d20SAndroid Build Coastguard Worker(class CLASS (PERM)) 3*2d543d20SAndroid Build Coastguard Worker(classorder (CLASS)) 4*2d543d20SAndroid Build Coastguard Worker(sid SID) 5*2d543d20SAndroid Build Coastguard Worker(sidorder (SID)) 6*2d543d20SAndroid Build Coastguard Worker(user USER) 7*2d543d20SAndroid Build Coastguard Worker(role ROLE) 8*2d543d20SAndroid Build Coastguard Worker(type TYPE) 9*2d543d20SAndroid Build Coastguard Worker(category CAT) 10*2d543d20SAndroid Build Coastguard Worker(categoryorder (CAT)) 11*2d543d20SAndroid Build Coastguard Worker(sensitivity SENS) 12*2d543d20SAndroid Build Coastguard Worker(sensitivityorder (SENS)) 13*2d543d20SAndroid Build Coastguard Worker(sensitivitycategory SENS (CAT)) 14*2d543d20SAndroid Build Coastguard Worker(allow TYPE self (CLASS (PERM))) 15*2d543d20SAndroid Build Coastguard Worker(roletype ROLE TYPE) 16*2d543d20SAndroid Build Coastguard Worker(userrole USER ROLE) 17*2d543d20SAndroid Build Coastguard Worker(userlevel USER (SENS)) 18*2d543d20SAndroid Build Coastguard Worker(userrange USER ((SENS)(SENS (CAT)))) 19*2d543d20SAndroid Build Coastguard Worker(sidcontext SID (USER ROLE TYPE ((SENS)(SENS)))) 20*2d543d20SAndroid Build Coastguard Worker;; Extra stuff 21*2d543d20SAndroid Build Coastguard Worker(common COMMON (PERM1 PERM2 PERM3 PERM4)) 22*2d543d20SAndroid Build Coastguard Worker(classcommon CLASS COMMON) 23*2d543d20SAndroid Build Coastguard Worker 24*2d543d20SAndroid Build Coastguard Worker 25*2d543d20SAndroid Build Coastguard Worker;; Check that "in" statements work in blocks 26*2d543d20SAndroid Build Coastguard Worker(block b1 27*2d543d20SAndroid Build Coastguard Worker (type t1a) 28*2d543d20SAndroid Build Coastguard Worker (allow t1b self (CLASS (PERM1))) 29*2d543d20SAndroid Build Coastguard Worker) 30*2d543d20SAndroid Build Coastguard Worker 31*2d543d20SAndroid Build Coastguard Worker(in b1 32*2d543d20SAndroid Build Coastguard Worker (type t1b) 33*2d543d20SAndroid Build Coastguard Worker (allow t1a self (CLASS (PERM1))) 34*2d543d20SAndroid Build Coastguard Worker) 35*2d543d20SAndroid Build Coastguard Worker 36*2d543d20SAndroid Build Coastguard Worker(in b1 37*2d543d20SAndroid Build Coastguard Worker (allow t1a self (CLASS (PERM2))) 38*2d543d20SAndroid Build Coastguard Worker (allow b1.t1a self (CLASS (PERM3))) 39*2d543d20SAndroid Build Coastguard Worker (allow .b1.t1a self (CLASS (PERM4))) 40*2d543d20SAndroid Build Coastguard Worker 41*2d543d20SAndroid Build Coastguard Worker (allow t1b self (CLASS (PERM2))) 42*2d543d20SAndroid Build Coastguard Worker (allow b1.t1b self (CLASS (PERM3))) 43*2d543d20SAndroid Build Coastguard Worker (allow .b1.t1b self (CLASS (PERM4))) 44*2d543d20SAndroid Build Coastguard Worker) 45*2d543d20SAndroid Build Coastguard Worker 46*2d543d20SAndroid Build Coastguard Worker 47*2d543d20SAndroid Build Coastguard Worker;; Check that "in" statements work in optionals 48*2d543d20SAndroid Build Coastguard Worker(optional option2 49*2d543d20SAndroid Build Coastguard Worker (type t2a) 50*2d543d20SAndroid Build Coastguard Worker (allow t2b self (CLASS (PERM1))) 51*2d543d20SAndroid Build Coastguard Worker) 52*2d543d20SAndroid Build Coastguard Worker 53*2d543d20SAndroid Build Coastguard Worker(in option2 54*2d543d20SAndroid Build Coastguard Worker (type t2b) 55*2d543d20SAndroid Build Coastguard Worker (allow t2a self (CLASS (PERM1))) 56*2d543d20SAndroid Build Coastguard Worker) 57*2d543d20SAndroid Build Coastguard Worker 58*2d543d20SAndroid Build Coastguard Worker(in option2 59*2d543d20SAndroid Build Coastguard Worker (allow t2a self (CLASS (PERM2))) 60*2d543d20SAndroid Build Coastguard Worker (allow t2b self (CLASS (PERM2))) 61*2d543d20SAndroid Build Coastguard Worker) 62*2d543d20SAndroid Build Coastguard Worker 63*2d543d20SAndroid Build Coastguard Worker(allow t2a self (CLASS (PERM3))) 64*2d543d20SAndroid Build Coastguard Worker(allow t2b self (CLASS (PERM3))) 65*2d543d20SAndroid Build Coastguard Worker 66*2d543d20SAndroid Build Coastguard Worker 67*2d543d20SAndroid Build Coastguard Worker;; Check that "in" statements work in macros 68*2d543d20SAndroid Build Coastguard Worker(type t3a) 69*2d543d20SAndroid Build Coastguard Worker(type t3b) 70*2d543d20SAndroid Build Coastguard Worker(macro m3 ((type t)) 71*2d543d20SAndroid Build Coastguard Worker (allow t3a self (CLASS (PERM1))) 72*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM1))) 73*2d543d20SAndroid Build Coastguard Worker) 74*2d543d20SAndroid Build Coastguard Worker 75*2d543d20SAndroid Build Coastguard Worker(call m3 (t3b)) 76*2d543d20SAndroid Build Coastguard Worker 77*2d543d20SAndroid Build Coastguard Worker(in m3 78*2d543d20SAndroid Build Coastguard Worker (allow t3a self (CLASS (PERM2))) 79*2d543d20SAndroid Build Coastguard Worker) 80*2d543d20SAndroid Build Coastguard Worker 81*2d543d20SAndroid Build Coastguard Worker(in m3 82*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM3))) 83*2d543d20SAndroid Build Coastguard Worker) 84*2d543d20SAndroid Build Coastguard Worker 85*2d543d20SAndroid Build Coastguard Worker 86*2d543d20SAndroid Build Coastguard Worker;; Check "in" statements work for nested optionals 87*2d543d20SAndroid Build Coastguard Worker(optional o4a 88*2d543d20SAndroid Build Coastguard Worker (optional o4b 89*2d543d20SAndroid Build Coastguard Worker (type t4b) 90*2d543d20SAndroid Build Coastguard Worker (allow t4b self (CLASS (PERM1))) 91*2d543d20SAndroid Build Coastguard Worker ) 92*2d543d20SAndroid Build Coastguard Worker) 93*2d543d20SAndroid Build Coastguard Worker 94*2d543d20SAndroid Build Coastguard Worker(in o4a.o4b 95*2d543d20SAndroid Build Coastguard Worker (allow t4b self (CLASS (PERM2))) 96*2d543d20SAndroid Build Coastguard Worker) 97*2d543d20SAndroid Build Coastguard Worker 98*2d543d20SAndroid Build Coastguard Worker 99*2d543d20SAndroid Build Coastguard Worker;; Check "in: statements work for nested optionals and macros 100*2d543d20SAndroid Build Coastguard Worker(macro m5 () 101*2d543d20SAndroid Build Coastguard Worker (type t5a) 102*2d543d20SAndroid Build Coastguard Worker (type t5b) 103*2d543d20SAndroid Build Coastguard Worker (optional o5a 104*2d543d20SAndroid Build Coastguard Worker (allow t5a self (CLASS (PERM1))) 105*2d543d20SAndroid Build Coastguard Worker (optional o5b 106*2d543d20SAndroid Build Coastguard Worker (allow t5b self (CLASS (PERM1))) 107*2d543d20SAndroid Build Coastguard Worker ) 108*2d543d20SAndroid Build Coastguard Worker ) 109*2d543d20SAndroid Build Coastguard Worker) 110*2d543d20SAndroid Build Coastguard Worker 111*2d543d20SAndroid Build Coastguard Worker(call m5) 112*2d543d20SAndroid Build Coastguard Worker 113*2d543d20SAndroid Build Coastguard Worker(in m5.o5a 114*2d543d20SAndroid Build Coastguard Worker (allow t5a self (CLASS (PERM2))) 115*2d543d20SAndroid Build Coastguard Worker) 116*2d543d20SAndroid Build Coastguard Worker 117*2d543d20SAndroid Build Coastguard Worker(in m5.o5a.o5b 118*2d543d20SAndroid Build Coastguard Worker (allow t5b self (CLASS (PERM2))) 119*2d543d20SAndroid Build Coastguard Worker) 120*2d543d20SAndroid Build Coastguard Worker 121*2d543d20SAndroid Build Coastguard Worker 122*2d543d20SAndroid Build Coastguard Worker;; 123*2d543d20SAndroid Build Coastguard Worker;; Expected: 124*2d543d20SAndroid Build Coastguard Worker;; 125*2d543d20SAndroid Build Coastguard Worker;; Types: 126*2d543d20SAndroid Build Coastguard Worker;; b1.t1a, b1.t1b 127*2d543d20SAndroid Build Coastguard Worker;; t2a, t2b 128*2d543d20SAndroid Build Coastguard Worker;; t3a, t3b 129*2d543d20SAndroid Build Coastguard Worker;; t4b 130*2d543d20SAndroid Build Coastguard Worker;; t5a, t5b 131*2d543d20SAndroid Build Coastguard Worker;; 132*2d543d20SAndroid Build Coastguard Worker;; Allow rules: 133*2d543d20SAndroid Build Coastguard Worker;; allow b1.t1a b1.t1a : CLASS { PERM1 PERM2 PERM3 PERM4 }; 134*2d543d20SAndroid Build Coastguard Worker;; allow b1.t1b b1.t1b : CLASS { PERM1 PERM2 PERM3 PERM4 }; 135*2d543d20SAndroid Build Coastguard Worker;; allow t2a t2a : CLASS { PERM1 PERM2 PERM3 }; 136*2d543d20SAndroid Build Coastguard Worker;; allow t2b t2b : CLASS { PERM1 PERM2 PERM3 }; 137*2d543d20SAndroid Build Coastguard Worker;; allow t3a t3a : CLASS { PERM1 PERM2 }; 138*2d543d20SAndroid Build Coastguard Worker;; allow t3b t3b : CLASS { PERM1 PERM3 }; 139*2d543d20SAndroid Build Coastguard Worker;; allow t4b t4b : CLASS { PERM1 PERM2 }; 140*2d543d20SAndroid Build Coastguard Worker;; allow t5a t5a : CLASS { PERM1 PERM2 }; 141*2d543d20SAndroid Build Coastguard Worker;; allow t5b t5b : CLASS { PERM1 PERM2 }; 142*2d543d20SAndroid Build Coastguard Worker 143