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 global resolution 26*2d543d20SAndroid Build Coastguard Worker(type t0) 27*2d543d20SAndroid Build Coastguard Worker(allow t0 self (CLASS (PERM1))) 28*2d543d20SAndroid Build Coastguard Worker(allow .t0 self (CLASS (PERM2))) 29*2d543d20SAndroid Build Coastguard Worker 30*2d543d20SAndroid Build Coastguard Worker 31*2d543d20SAndroid Build Coastguard Worker;; Check block and sub-block resolution 32*2d543d20SAndroid Build Coastguard Worker(block b1a 33*2d543d20SAndroid Build Coastguard Worker (type t1a) 34*2d543d20SAndroid Build Coastguard Worker (allow t1a self (CLASS (PERM))) 35*2d543d20SAndroid Build Coastguard Worker (allow b1b.t1b self (CLASS (PERM))) 36*2d543d20SAndroid Build Coastguard Worker (block b1b 37*2d543d20SAndroid Build Coastguard Worker (type t1b) 38*2d543d20SAndroid Build Coastguard Worker (allow t1a self (CLASS (PERM1))) 39*2d543d20SAndroid Build Coastguard Worker (allow t1b self (CLASS (PERM1))) 40*2d543d20SAndroid Build Coastguard Worker (allow .b1a.t1a self (CLASS (PERM2))) 41*2d543d20SAndroid Build Coastguard Worker (allow .b1a.b1b.t1b self (CLASS (PERM2))) 42*2d543d20SAndroid Build Coastguard Worker ) 43*2d543d20SAndroid Build Coastguard Worker) 44*2d543d20SAndroid Build Coastguard Worker(allow b1a.t1a self (CLASS (PERM3))) 45*2d543d20SAndroid Build Coastguard Worker(allow b1a.b1b.t1b self (CLASS (PERM3))) 46*2d543d20SAndroid Build Coastguard Worker(allow .b1a.t1a self (CLASS (PERM4))) 47*2d543d20SAndroid Build Coastguard Worker(allow .b1a.b1b.t1b self (CLASS (PERM4))) 48*2d543d20SAndroid Build Coastguard Worker 49*2d543d20SAndroid Build Coastguard Worker 50*2d543d20SAndroid Build Coastguard Worker;; Check macro arg resolution 51*2d543d20SAndroid Build Coastguard Worker(type t2) 52*2d543d20SAndroid Build Coastguard Worker(macro m2 ((type t)) 53*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM))) 54*2d543d20SAndroid Build Coastguard Worker) 55*2d543d20SAndroid Build Coastguard Worker(call m2 (t2)) 56*2d543d20SAndroid Build Coastguard Worker 57*2d543d20SAndroid Build Coastguard Worker 58*2d543d20SAndroid Build Coastguard Worker;; Check resolution for a macro with a parent decl 59*2d543d20SAndroid Build Coastguard Worker(block b3 60*2d543d20SAndroid Build Coastguard Worker (type t3) 61*2d543d20SAndroid Build Coastguard Worker (macro m3 () 62*2d543d20SAndroid Build Coastguard Worker (allow t3 self (CLASS (PERM))) 63*2d543d20SAndroid Build Coastguard Worker ) 64*2d543d20SAndroid Build Coastguard Worker) 65*2d543d20SAndroid Build Coastguard Worker(call b3.m3) 66*2d543d20SAndroid Build Coastguard Worker 67*2d543d20SAndroid Build Coastguard Worker 68*2d543d20SAndroid Build Coastguard Worker;; Check resolution for a macro with a caller decl 69*2d543d20SAndroid Build Coastguard Worker(block b4 70*2d543d20SAndroid Build Coastguard Worker (block b4a 71*2d543d20SAndroid Build Coastguard Worker (macro m4 () 72*2d543d20SAndroid Build Coastguard Worker (allow t4 self (CLASS (PERM))) 73*2d543d20SAndroid Build Coastguard Worker ) 74*2d543d20SAndroid Build Coastguard Worker ) 75*2d543d20SAndroid Build Coastguard Worker (block b4b 76*2d543d20SAndroid Build Coastguard Worker (type t4) 77*2d543d20SAndroid Build Coastguard Worker (call .b4.b4a.m4) 78*2d543d20SAndroid Build Coastguard Worker ) 79*2d543d20SAndroid Build Coastguard Worker) 80*2d543d20SAndroid Build Coastguard Worker 81*2d543d20SAndroid Build Coastguard Worker 82*2d543d20SAndroid Build Coastguard Worker;; Check resolution for blockinherits with type in inheriting block 83*2d543d20SAndroid Build Coastguard Worker(block b5a 84*2d543d20SAndroid Build Coastguard Worker (type t5a) 85*2d543d20SAndroid Build Coastguard Worker (block b5b 86*2d543d20SAndroid Build Coastguard Worker (allow t5a self (CLASS (PERM1))) 87*2d543d20SAndroid Build Coastguard Worker ) 88*2d543d20SAndroid Build Coastguard Worker) 89*2d543d20SAndroid Build Coastguard Worker 90*2d543d20SAndroid Build Coastguard Worker(block b5c 91*2d543d20SAndroid Build Coastguard Worker (type t5a) 92*2d543d20SAndroid Build Coastguard Worker (blockinherit b5a.b5b) 93*2d543d20SAndroid Build Coastguard Worker (allow t5a self (CLASS (PERM2))) 94*2d543d20SAndroid Build Coastguard Worker) 95*2d543d20SAndroid Build Coastguard Worker 96*2d543d20SAndroid Build Coastguard Worker;; Check resolution for blockinherits with no type in inheriting block 97*2d543d20SAndroid Build Coastguard Worker(block b6a 98*2d543d20SAndroid Build Coastguard Worker (type t6a) 99*2d543d20SAndroid Build Coastguard Worker (block b6b 100*2d543d20SAndroid Build Coastguard Worker (allow t6a self (CLASS (PERM1))) 101*2d543d20SAndroid Build Coastguard Worker ) 102*2d543d20SAndroid Build Coastguard Worker) 103*2d543d20SAndroid Build Coastguard Worker 104*2d543d20SAndroid Build Coastguard Worker(block b6c 105*2d543d20SAndroid Build Coastguard Worker (blockinherit b6a.b6b) ;; This does not cause an error. 106*2d543d20SAndroid Build Coastguard Worker ;;(allow t6a self (CLASS (PERM2))) ;; This causes an error 107*2d543d20SAndroid Build Coastguard Worker) 108*2d543d20SAndroid Build Coastguard Worker 109*2d543d20SAndroid Build Coastguard Worker 110*2d543d20SAndroid Build Coastguard Worker;; Check for proper resolution of t 111*2d543d20SAndroid Build Coastguard Worker(block b7 112*2d543d20SAndroid Build Coastguard Worker (type t) 113*2d543d20SAndroid Build Coastguard Worker (macro m7 ((type t)) 114*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM))) 115*2d543d20SAndroid Build Coastguard Worker ) 116*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM1))) 117*2d543d20SAndroid Build Coastguard Worker (block b7a 118*2d543d20SAndroid Build Coastguard Worker (type t) 119*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM2))) 120*2d543d20SAndroid Build Coastguard Worker (block b7b 121*2d543d20SAndroid Build Coastguard Worker (type t) 122*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM3))) 123*2d543d20SAndroid Build Coastguard Worker (call m7 (t)) 124*2d543d20SAndroid Build Coastguard Worker ) 125*2d543d20SAndroid Build Coastguard Worker ) 126*2d543d20SAndroid Build Coastguard Worker) 127*2d543d20SAndroid Build Coastguard Worker 128*2d543d20SAndroid Build Coastguard Worker 129*2d543d20SAndroid Build Coastguard Worker;; Check that improper name causes an error 130*2d543d20SAndroid Build Coastguard Worker(block b8 131*2d543d20SAndroid Build Coastguard Worker (optional o8a 132*2d543d20SAndroid Build Coastguard Worker (type t8a) 133*2d543d20SAndroid Build Coastguard Worker ) 134*2d543d20SAndroid Build Coastguard Worker (in o8a 135*2d543d20SAndroid Build Coastguard Worker (allow t8a self (CLASS (PERM1))) 136*2d543d20SAndroid Build Coastguard Worker ) 137*2d543d20SAndroid Build Coastguard Worker ;;(allow o8a.t8a self (CLASS (PERM))) ;; Bad name 138*2d543d20SAndroid Build Coastguard Worker (macro m8 ((type t)) 139*2d543d20SAndroid Build Coastguard Worker (allow t self (CLASS (PERM1))) 140*2d543d20SAndroid Build Coastguard Worker ) 141*2d543d20SAndroid Build Coastguard Worker ;;(allow m8.t self (CLASS (PERM))) ;; Bad name 142*2d543d20SAndroid Build Coastguard Worker) 143*2d543d20SAndroid Build Coastguard Worker 144*2d543d20SAndroid Build Coastguard Worker 145*2d543d20SAndroid Build Coastguard Worker;; 146*2d543d20SAndroid Build Coastguard Worker;; Expected: 147*2d543d20SAndroid Build Coastguard Worker;; 148*2d543d20SAndroid Build Coastguard Worker;; Types: 149*2d543d20SAndroid Build Coastguard Worker;; t0 150*2d543d20SAndroid Build Coastguard Worker;; b1a.t1a, b1a.b1b.t1b 151*2d543d20SAndroid Build Coastguard Worker;; t2 152*2d543d20SAndroid Build Coastguard Worker;; b3.t3 153*2d543d20SAndroid Build Coastguard Worker;; b4.b4b.t4 154*2d543d20SAndroid Build Coastguard Worker;; b5a.t5a, b5c.t5a 155*2d543d20SAndroid Build Coastguard Worker;; b6a.t6a 156*2d543d20SAndroid Build Coastguard Worker;; b7.t, b7.b7a.t, b7.b7a.b7b.t 157*2d543d20SAndroid Build Coastguard Worker;; b8.t8a 158*2d543d20SAndroid Build Coastguard Worker;; 159*2d543d20SAndroid Build Coastguard Worker;; Allow rules: 160*2d543d20SAndroid Build Coastguard Worker;; allow t0 t0 : CLASS { PERM1 PERM2 }; 161*2d543d20SAndroid Build Coastguard Worker;; allow b1a.b1b.t1b b1a.b1b.t1b : CLASS { PERM PERM1 PERM2 PERM3 PERM4 }; 162*2d543d20SAndroid Build Coastguard Worker;; allow b1a.t1a b1a.t1a : CLASS { PERM PERM1 PERM2 PERM3 PERM4 }; 163*2d543d20SAndroid Build Coastguard Worker;; allow t2 t2 : CLASS { PERM }; 164*2d543d20SAndroid Build Coastguard Worker;; allow b3.t3 b3.t3 : CLASS { PERM }; 165*2d543d20SAndroid Build Coastguard Worker;; allow b4.b4b.t4 b4.b4b.t4 : CLASS { PERM }; 166*2d543d20SAndroid Build Coastguard Worker;; allow b5a.t5a b5a.t5a : CLASS { PERM1 }; 167*2d543d20SAndroid Build Coastguard Worker;; allow b5c.t5a b5c.t5a : CLASS { PERM1 PERM2 }; 168*2d543d20SAndroid Build Coastguard Worker;; allow b6a.t6a b6a.t6a : CLASS { PERM1 }; 169*2d543d20SAndroid Build Coastguard Worker;; allow b7.b7a.b7b.t b7.b7a.b7b.t : CLASS { PERM PERM3 }; 170*2d543d20SAndroid Build Coastguard Worker;; allow b7.b7a.t b7.b7a.t : CLASS { PERM2 }; 171*2d543d20SAndroid Build Coastguard Worker;; allow b7.t b7.t : CLASS { PERM1 }; 172*2d543d20SAndroid Build Coastguard Worker;; allow b8.t8a b8.t8a : CLASS { PERM1 }; 173