xref: /openbsd-src/regress/sys/kern/pledge/filedescriptor/Makefile (revision 61131e19195a93f3dc3f73af308ed929435706c1)
1*61131e19Sbluhm#	$OpenBSD: Makefile,v 1.2 2018/04/11 16:47:17 bluhm Exp $
284d4cbe5Sbluhm
384d4cbe5Sbluhm# Copyright (c) 2018 Alexander Bluhm <bluhm@openbsd.org>
484d4cbe5Sbluhm#
584d4cbe5Sbluhm# Permission to use, copy, modify, and distribute this software for any
684d4cbe5Sbluhm# purpose with or without fee is hereby granted, provided that the above
784d4cbe5Sbluhm# copyright notice and this permission notice appear in all copies.
884d4cbe5Sbluhm#
984d4cbe5Sbluhm# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1084d4cbe5Sbluhm# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1184d4cbe5Sbluhm# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1284d4cbe5Sbluhm# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1384d4cbe5Sbluhm# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1484d4cbe5Sbluhm# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1584d4cbe5Sbluhm# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1684d4cbe5Sbluhm
17*61131e19Sbluhm# Check that a file descriptor's plegde flag is correctly propagated.
18*61131e19Sbluhm# The test covers the system calls dup, dup2, dup3, open /dev/fd, and
19*61131e19Sbluhm# file descriptor passing.  The fstat(1) output is analysed.
20*61131e19Sbluhm
2184d4cbe5SbluhmPROGS =		dup dup2 dup3 dev pass
2284d4cbe5SbluhmWARNINGS =	yes
2384d4cbe5SbluhmCLEANFILES =	*.fstat
2484d4cbe5Sbluhm
2584d4cbe5Sbluhm.if make (regress) || make (all)
2684d4cbe5Sbluhm.BEGIN:
2784d4cbe5Sbluhm	rm -f -- *.fstat
2884d4cbe5Sbluhm.endif
2984d4cbe5Sbluhm
3084d4cbe5Sbluhm.for p in ${PROGS}
3184d4cbe5Sbluhm
3284d4cbe5SbluhmSRCS_$p =			main.c $p.c
3384d4cbe5SbluhmREGRESS_TARGETS +=	run-regress-$p
3484d4cbe5Sbluhm
3584d4cbe5Sbluhm$p.fstat: $p
3684d4cbe5Sbluhm	./$p >$@.tmp
3784d4cbe5Sbluhm	mv $@.tmp $@
3884d4cbe5Sbluhm	# file descriptor 3 has been opened before pledge
3984d4cbe5Sbluhm	grep ' 3 /.* r ' $@
4084d4cbe5Sbluhm	# file descriptor 4 has been opened after pledge
4184d4cbe5Sbluhm	grep ' 4 /.* rp ' $@
4284d4cbe5Sbluhm
4384d4cbe5Sbluhm.endfor
4484d4cbe5Sbluhm
4584d4cbe5Sbluhmrun-regress-dup: dup.fstat
4684d4cbe5Sbluhm	# file descriptor 5 has been dup(2)ed from pre-pledge
4784d4cbe5Sbluhm	grep ' 5 /.* r ' dup.fstat
4884d4cbe5Sbluhm	# file descriptor 6 has been dup(2)ed from post-pledge
4984d4cbe5Sbluhm	grep ' 6 /.* rp ' dup.fstat
5084d4cbe5Sbluhm
5184d4cbe5Sbluhmrun-regress-dup2: dup2.fstat
5284d4cbe5Sbluhm	# file descriptor 5 has been dup2(2)ed from pre-pledge
5384d4cbe5Sbluhm	grep ' 5 /.* r ' dup2.fstat
5484d4cbe5Sbluhm	# file descriptor 6 has been dup2(2)ed from post-pledge
5584d4cbe5Sbluhm	grep ' 6 /.* rp ' dup2.fstat
5684d4cbe5Sbluhm	# dup2(2) closes pre-pledge and overwrites with post-pledge
5784d4cbe5Sbluhm	grep ' 7 /.* rp ' dup2.fstat
5884d4cbe5Sbluhm	# dup2(2) closes post-pledge and overwrites with pre-pledge
5984d4cbe5Sbluhm	grep ' 8 /.* r ' dup2.fstat
6084d4cbe5Sbluhm	# dup2(2) pre-pledge onto itself
6184d4cbe5Sbluhm	grep ' 9 /.* r ' dup2.fstat
6284d4cbe5Sbluhm	# dup2(2) post-pledge onto itself
6384d4cbe5Sbluhm	grep ' 10 /.* rp ' dup2.fstat
6484d4cbe5Sbluhm
6584d4cbe5Sbluhmrun-regress-dup3: dup3.fstat
6684d4cbe5Sbluhm	# file descriptor 5 has been dup3(2)ed from pre-pledge
6784d4cbe5Sbluhm	grep ' 5 /.* re ' dup3.fstat
6884d4cbe5Sbluhm	# file descriptor 6 has been dup3(2)ed from post-pledge
6984d4cbe5Sbluhm	grep ' 6 /.* rep ' dup3.fstat
7084d4cbe5Sbluhm	# dup3(2) closes pre-pledge and overwrites with post-pledge
7184d4cbe5Sbluhm	grep ' 7 /.* rep ' dup3.fstat
7284d4cbe5Sbluhm	# dup3(2) closes post-pledge and overwrites with pre-pledge
7384d4cbe5Sbluhm	grep ' 8 /.* re ' dup3.fstat
7484d4cbe5Sbluhm	# dup3(2) pre-pledge onto itself fails
7584d4cbe5Sbluhm	grep ' 9 /.* r ' dup3.fstat
7684d4cbe5Sbluhm	# dup3(2) post-pledge onto itself fails
7784d4cbe5Sbluhm	grep ' 10 /.* rp ' dup3.fstat
7884d4cbe5Sbluhm
7984d4cbe5Sbluhmrun-regress-dev: dev.fstat
8084d4cbe5Sbluhm	# file descriptor 5 has been open(2)ed from pre-pledge /dev/fd/3
81*61131e19Sbluhm	grep ' 5 /.* r ' dev.fstat
8284d4cbe5Sbluhm	# file descriptor 6 has been open(2)ed from post-pledge /dev/fd/4
8384d4cbe5Sbluhm	grep ' 6 /.* rp ' dev.fstat
8484d4cbe5Sbluhm
8584d4cbe5Sbluhmrun-regress-pass: pass.fstat
8684d4cbe5Sbluhm	# file descriptor 7 has been passed from pre-pledge
8784d4cbe5Sbluhm	grep ' 7 /.* r ' pass.fstat
8884d4cbe5Sbluhm	# file descriptor 8 has been passed from post-pledge
8984d4cbe5Sbluhm	grep ' 8 /.* rp ' pass.fstat
9084d4cbe5Sbluhm
9184d4cbe5Sbluhm.include <bsd.regress.mk>
92