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