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