xref: /aosp_15_r20/external/selinux/secilc/test/name_resolution_test.cil (revision 2d543d20722ada2425b5bdab9d0d1d29470e7bba)
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