1# $OpenBSD: Makefile,v 1.2 2018/04/11 16:47:17 bluhm Exp $ 2 3# Copyright (c) 2018 Alexander Bluhm <bluhm@openbsd.org> 4# 5# Permission to use, copy, modify, and distribute this software for any 6# purpose with or without fee is hereby granted, provided that the above 7# copyright notice and this permission notice appear in all copies. 8# 9# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16 17# Check that a file descriptor's plegde flag is correctly propagated. 18# The test covers the system calls dup, dup2, dup3, open /dev/fd, and 19# file descriptor passing. The fstat(1) output is analysed. 20 21PROGS = dup dup2 dup3 dev pass 22WARNINGS = yes 23CLEANFILES = *.fstat 24 25.if make (regress) || make (all) 26.BEGIN: 27 rm -f -- *.fstat 28.endif 29 30.for p in ${PROGS} 31 32SRCS_$p = main.c $p.c 33REGRESS_TARGETS += run-regress-$p 34 35$p.fstat: $p 36 ./$p >$@.tmp 37 mv $@.tmp $@ 38 # file descriptor 3 has been opened before pledge 39 grep ' 3 /.* r ' $@ 40 # file descriptor 4 has been opened after pledge 41 grep ' 4 /.* rp ' $@ 42 43.endfor 44 45run-regress-dup: dup.fstat 46 # file descriptor 5 has been dup(2)ed from pre-pledge 47 grep ' 5 /.* r ' dup.fstat 48 # file descriptor 6 has been dup(2)ed from post-pledge 49 grep ' 6 /.* rp ' dup.fstat 50 51run-regress-dup2: dup2.fstat 52 # file descriptor 5 has been dup2(2)ed from pre-pledge 53 grep ' 5 /.* r ' dup2.fstat 54 # file descriptor 6 has been dup2(2)ed from post-pledge 55 grep ' 6 /.* rp ' dup2.fstat 56 # dup2(2) closes pre-pledge and overwrites with post-pledge 57 grep ' 7 /.* rp ' dup2.fstat 58 # dup2(2) closes post-pledge and overwrites with pre-pledge 59 grep ' 8 /.* r ' dup2.fstat 60 # dup2(2) pre-pledge onto itself 61 grep ' 9 /.* r ' dup2.fstat 62 # dup2(2) post-pledge onto itself 63 grep ' 10 /.* rp ' dup2.fstat 64 65run-regress-dup3: dup3.fstat 66 # file descriptor 5 has been dup3(2)ed from pre-pledge 67 grep ' 5 /.* re ' dup3.fstat 68 # file descriptor 6 has been dup3(2)ed from post-pledge 69 grep ' 6 /.* rep ' dup3.fstat 70 # dup3(2) closes pre-pledge and overwrites with post-pledge 71 grep ' 7 /.* rep ' dup3.fstat 72 # dup3(2) closes post-pledge and overwrites with pre-pledge 73 grep ' 8 /.* re ' dup3.fstat 74 # dup3(2) pre-pledge onto itself fails 75 grep ' 9 /.* r ' dup3.fstat 76 # dup3(2) post-pledge onto itself fails 77 grep ' 10 /.* rp ' dup3.fstat 78 79run-regress-dev: dev.fstat 80 # file descriptor 5 has been open(2)ed from pre-pledge /dev/fd/3 81 grep ' 5 /.* r ' dev.fstat 82 # file descriptor 6 has been open(2)ed from post-pledge /dev/fd/4 83 grep ' 6 /.* rp ' dev.fstat 84 85run-regress-pass: pass.fstat 86 # file descriptor 7 has been passed from pre-pledge 87 grep ' 7 /.* r ' pass.fstat 88 # file descriptor 8 has been passed from post-pledge 89 grep ' 8 /.* rp ' pass.fstat 90 91.include <bsd.regress.mk> 92