1# $OpenBSD: Makefile,v 1.6 2020/12/17 14:22:42 bluhm Exp $
2
3# Call unveil(2) in combination with unlink(2), chroot(2), chdir(2).
4# Use umount(8) to check that the mountpoint leaks no vnode.
5# There were vnode reference counting bugs in the kernel.
6
7PROGS=		unveil-unlink unveil-chroot unveil-perm unveil-chdir
8CLEANFILES=	diskimage
9
10.PHONY: mount unconfig clean
11
12diskimage: unconfig
13	${SUDO} dd if=/dev/zero of=diskimage bs=512 count=4k
14	${SUDO} vnconfig vnd0 diskimage
15	${SUDO} newfs vnd0c
16
17mount: diskimage
18	${SUDO} mkdir -p /mnt/regress-unveil
19	${SUDO} mount /dev/vnd0c /mnt/regress-unveil
20
21unconfig:
22	-${SUDO} umount -f /dev/vnd0c 2>/dev/null || true
23	-${SUDO} rmdir /mnt/regress-unveil 2>/dev/null || true
24	-${SUDO} vnconfig -u vnd0 2>/dev/null || true
25	-${SUDO} rm -f stamp-setup
26
27REGRESS_SETUP	=	${PROGS} mount
28REGRESS_CLEANUP =	unconfig
29REGRESS_TARGETS =
30
31REGRESS_TARGETS +=	run-unlink
32run-unlink:
33	${SUDO} mkdir -p /mnt/regress-unveil/foo
34	${SUDO} ./unveil-unlink /mnt/regress-unveil/foo bar
35	${SUDO} umount /mnt/regress-unveil
36
37REGRESS_TARGETS +=	run-chroot
38run-chroot:
39	${SUDO} mkdir -p /mnt/regress-unveil
40	${SUDO} ./unveil-chroot /mnt/regress-unveil /
41	${SUDO} umount /mnt/regress-unveil
42
43REGRESS_TARGETS +=	run-chroot-dir
44run-chroot-dir:
45	${SUDO} mkdir -p /mnt/regress-unveil/foo
46	${SUDO} ./unveil-chroot /mnt/regress-unveil/foo /
47	${SUDO} umount /mnt/regress-unveil
48
49REGRESS_TARGETS +=	run-chroot-unveil-dir
50run-chroot-unveil-dir:
51	${SUDO} mkdir -p /mnt/regress-unveil/foo
52	${SUDO} ./unveil-chroot /mnt/regress-unveil /foo
53	${SUDO} umount /mnt/regress-unveil
54
55REGRESS_TARGETS +=	run-chroot-dir-unveil-dir
56run-chroot-dir-unveil-dir:
57	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
58	${SUDO} ./unveil-chroot /mnt/regress-unveil/foo /bar
59	${SUDO} umount /mnt/regress-unveil
60
61REGRESS_TARGETS +=	run-chroot-rootslash
62run-chroot-rootslash:
63	${SUDO} mkdir -p /mnt/regress-unveil
64	${SUDO} ./unveil-chroot /mnt/regress-unveil //
65	${SUDO} umount /mnt/regress-unveil
66
67REGRESS_TARGETS +=	run-chroot-open
68run-chroot-open:
69	${SUDO} mkdir -p /mnt/regress-unveil
70	${SUDO} touch /mnt/regress-unveil/baz
71	${SUDO} ./unveil-chroot /mnt/regress-unveil / /baz
72	${SUDO} umount /mnt/regress-unveil
73
74REGRESS_TARGETS +=	run-chroot-dir-open
75run-chroot-dir-open:
76	${SUDO} mkdir -p /mnt/regress-unveil/foo
77	${SUDO} touch /mnt/regress-unveil/foo/baz
78	${SUDO} ./unveil-chroot /mnt/regress-unveil/foo / /baz
79	${SUDO} umount /mnt/regress-unveil
80
81REGRESS_TARGETS +=	run-chroot-unveil-dir-open
82run-chroot-unveil-dir-open:
83	${SUDO} mkdir -p /mnt/regress-unveil/foo
84	${SUDO} touch /mnt/regress-unveil/foo/baz
85	${SUDO} ./unveil-chroot /mnt/regress-unveil /foo /baz
86	${SUDO} umount /mnt/regress-unveil
87
88REGRESS_TARGETS +=	run-chroot-dir-unveil-dir-open
89run-chroot-dir-unveil-dir-open:
90	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
91	${SUDO} touch /mnt/regress-unveil/foo/bar/baz
92	${SUDO} ./unveil-chroot /mnt/regress-unveil/foo /bar /baz
93	${SUDO} umount /mnt/regress-unveil
94
95REGRESS_TARGETS +=	run-chroot-rootslash-open
96run-chroot-rootslash-open:
97	${SUDO} mkdir -p /mnt/regress-unveil
98	${SUDO} touch /mnt/regress-unveil/baz
99	${SUDO} ./unveil-chroot /mnt/regress-unveil // /baz
100	${SUDO} umount /mnt/regress-unveil
101
102REGRESS_TARGETS +=	run-chroot-open-rootslash
103run-chroot-open-rootslash:
104	${SUDO} mkdir -p /mnt/regress-unveil
105	${SUDO} touch /mnt/regress-unveil/baz
106	${SUDO} ./unveil-chroot /mnt/regress-unveil / //baz
107	${SUDO} umount /mnt/regress-unveil
108
109REGRESS_TARGETS +=	run-chroot-unveil-rootdot-open
110run-chroot-unveil-rootdot-open:
111	${SUDO} mkdir -p /mnt/regress-unveil
112	${SUDO} touch /mnt/regress-unveil/baz
113	${SUDO} ./unveil-chroot /mnt/regress-unveil /. /baz
114	${SUDO} umount /mnt/regress-unveil
115
116REGRESS_TARGETS +=	run-chroot-unveil-rootdotdot-open
117run-chroot-unveil-rootdotdot-open:
118	${SUDO} mkdir -p /mnt/regress-unveil
119	${SUDO} touch /mnt/regress-unveil/baz
120	${SUDO} ./unveil-chroot /mnt/regress-unveil /.. /baz
121	${SUDO} umount /mnt/regress-unveil
122
123REGRESS_TARGETS +=	run-perm
124run-perm:
125	${SUDO} mkdir -p /mnt/regress-unveil
126	${SUDO} ./unveil-perm "" /mnt/regress-unveil
127	${SUDO} umount /mnt/regress-unveil
128
129REGRESS_TARGETS +=	run-perm-dir
130run-perm-dir:
131	${SUDO} mkdir -p /mnt/regress-unveil/foo
132	${SUDO} ./unveil-perm "" /mnt/regress-unveil/foo
133	${SUDO} umount /mnt/regress-unveil
134
135REGRESS_TARGETS +=	run-perm-open
136run-perm-open:
137	${SUDO} mkdir -p /mnt/regress-unveil
138	${SUDO} touch /mnt/regress-unveil/baz
139	${SUDO} ./unveil-perm "" /mnt/regress-unveil baz
140	${SUDO} umount /mnt/regress-unveil
141
142REGRESS_TARGETS +=	run-perm-dir-open
143run-perm-dir-open:
144	${SUDO} mkdir -p /mnt/regress-unveil/foo
145	${SUDO} touch /mnt/regress-unveil/foo/baz
146	${SUDO} ./unveil-perm "" /mnt/regress-unveil/foo baz
147	${SUDO} umount /mnt/regress-unveil
148
149REGRESS_TARGETS +=	run-perm-create-open
150run-perm-create-open:
151	${SUDO} mkdir -p /mnt/regress-unveil
152	${SUDO} touch /mnt/regress-unveil/baz
153	${SUDO} ./unveil-perm "c" /mnt/regress-unveil baz
154	${SUDO} umount /mnt/regress-unveil
155
156REGRESS_TARGETS +=	run-perm-dir-create-open
157run-perm-dir-create-open:
158	${SUDO} mkdir -p /mnt/regress-unveil/foo
159	${SUDO} touch /mnt/regress-unveil/foo/baz
160	${SUDO} ./unveil-perm "c" /mnt/regress-unveil/foo baz
161	${SUDO} umount /mnt/regress-unveil
162
163REGRESS_TARGETS +=	run-perm-write-open
164run-perm-write-open:
165	${SUDO} mkdir -p /mnt/regress-unveil
166	${SUDO} touch /mnt/regress-unveil/baz
167	${SUDO} ./unveil-perm "w" /mnt/regress-unveil baz
168	${SUDO} umount /mnt/regress-unveil
169
170REGRESS_TARGETS +=	run-perm-dir-write-open
171run-perm-dir-write-open:
172	${SUDO} mkdir -p /mnt/regress-unveil/foo
173	${SUDO} touch /mnt/regress-unveil/foo/baz
174	${SUDO} ./unveil-perm "w" /mnt/regress-unveil/foo baz
175	${SUDO} umount /mnt/regress-unveil
176
177REGRESS_TARGETS +=	run-chdir
178run-chdir:
179	${SUDO} mkdir -p /mnt/regress-unveil
180	${SUDO} ./unveil-chdir /mnt/regress-unveil .
181	${SUDO} umount /mnt/regress-unveil
182
183REGRESS_TARGETS +=	run-chdir-dir
184run-chdir-dir:
185	${SUDO} mkdir -p /mnt/regress-unveil/foo
186	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo .
187	${SUDO} umount /mnt/regress-unveil
188
189REGRESS_TARGETS +=	run-chdir-unveil-dir
190run-chdir-unveil-dir:
191	${SUDO} mkdir -p /mnt/regress-unveil/foo
192	${SUDO} ./unveil-chdir /mnt/regress-unveil foo
193	${SUDO} umount /mnt/regress-unveil
194
195REGRESS_TARGETS +=	run-chdir-unveil-backdir
196run-chdir-unveil-backdir:
197	${SUDO} mkdir -p /mnt/regress-unveil/foo
198	${SUDO} ./unveil-chdir /mnt/regress-unveil foo/..
199	${SUDO} umount /mnt/regress-unveil
200
201REGRESS_TARGETS +=	run-chdir-unveil-dotdot
202run-chdir-unveil-dotdot:
203	${SUDO} mkdir -p /mnt/regress-unveil/foo
204	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo ..
205	${SUDO} umount /mnt/regress-unveil
206
207REGRESS_TARGETS +=	run-chdir-dir-unveil-dir
208run-chdir-dir-unveil-dir:
209	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
210	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo bar
211	${SUDO} umount /mnt/regress-unveil
212
213REGRESS_TARGETS +=	run-chdir-dir-unveil-backdir
214run-chdir-dir-unveil-backdir:
215	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
216	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo bar/..
217	${SUDO} umount /mnt/regress-unveil
218
219REGRESS_TARGETS +=	run-chdir-dir-unveil-dotdot
220run-chdir-dir-unveil-dotdot:
221	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
222	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo/bar ..
223	${SUDO} umount /mnt/regress-unveil
224
225REGRESS_TARGETS +=	run-chdir-open
226run-chdir-open:
227	${SUDO} mkdir -p /mnt/regress-unveil
228	${SUDO} touch /mnt/regress-unveil/baz
229	${SUDO} ./unveil-chdir /mnt/regress-unveil . baz
230	${SUDO} umount /mnt/regress-unveil
231
232REGRESS_TARGETS +=	run-chdir-dir-open
233run-chdir-dir-open:
234	${SUDO} mkdir -p /mnt/regress-unveil/foo
235	${SUDO} touch /mnt/regress-unveil/foo/baz
236	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo . baz
237	${SUDO} umount /mnt/regress-unveil
238
239REGRESS_TARGETS +=	run-chdir-unveil-dir-open
240run-chdir-unveil-dir-open:
241	${SUDO} mkdir -p /mnt/regress-unveil/foo
242	${SUDO} touch /mnt/regress-unveil/foo/baz
243	${SUDO} ./unveil-chdir /mnt/regress-unveil foo baz
244	${SUDO} umount /mnt/regress-unveil
245
246REGRESS_TARGETS +=	run-chdir-unveil-backdir-open
247run-chdir-unveil-backdir-open:
248	${SUDO} mkdir -p /mnt/regress-unveil/foo
249	${SUDO} touch /mnt/regress-unveil/baz
250	${SUDO} ./unveil-chdir /mnt/regress-unveil foo/.. baz
251	${SUDO} umount /mnt/regress-unveil
252
253REGRESS_TARGETS +=	run-chdir-unveil-dotdot-open
254run-chdir-unveil-dotdot-open:
255	${SUDO} mkdir -p /mnt/regress-unveil/foo
256	${SUDO} touch /mnt/regress-unveil/baz
257	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo .. baz
258	${SUDO} umount /mnt/regress-unveil
259
260REGRESS_TARGETS +=	run-chdir-dir-unveil-dir-open
261run-chdir-dir-unveil-dir-open:
262	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
263	${SUDO} touch /mnt/regress-unveil/foo/bar/baz
264	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo bar baz
265	${SUDO} umount /mnt/regress-unveil
266
267REGRESS_TARGETS +=	run-chdir-dir-unveil-backdir-open
268run-chdir-dir-unveil-backdir-open:
269	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
270	${SUDO} touch /mnt/regress-unveil/foo/baz
271	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo bar/.. baz
272	${SUDO} umount /mnt/regress-unveil
273
274REGRESS_TARGETS +=	run-chdir-dir-unveil-dotdot-open
275run-chdir-dir-unveil-dotdot-open:
276	${SUDO} mkdir -p /mnt/regress-unveil/foo/bar
277	${SUDO} touch /mnt/regress-unveil/foo/baz
278	${SUDO} ./unveil-chdir /mnt/regress-unveil/foo/bar .. baz
279	${SUDO} umount /mnt/regress-unveil
280
281REGRESS_ROOT_TARGETS =	${REGRESS_TARGETS}
282
283.include <bsd.regress.mk>
284