├── LICENSE ├── Makefile ├── README ├── fstest.c └── tests ├── chflags ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t ├── 12.t └── 13.t ├── chmod ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t └── 11.t ├── chown ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t └── 10.t ├── conf ├── link ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t ├── 12.t ├── 13.t ├── 14.t ├── 15.t ├── 16.t └── 17.t ├── misc.sh ├── mkdir ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t └── 12.t ├── mkfifo ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t └── 12.t ├── open ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t ├── 12.t ├── 13.t ├── 14.t ├── 15.t ├── 16.t ├── 17.t ├── 18.t ├── 19.t ├── 20.t ├── 21.t ├── 22.t └── 23.t ├── rename ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t ├── 12.t ├── 13.t ├── 14.t ├── 15.t ├── 16.t ├── 17.t ├── 18.t ├── 19.t └── 20.t ├── rmdir ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t ├── 12.t ├── 13.t ├── 14.t └── 15.t ├── symlink ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t └── 12.t ├── truncate ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t ├── 12.t ├── 13.t └── 14.t └── unlink ├── 00.t ├── 01.t ├── 02.t ├── 03.t ├── 04.t ├── 05.t ├── 06.t ├── 07.t ├── 08.t ├── 09.t ├── 10.t ├── 11.t ├── 12.t └── 13.t /LICENSE: -------------------------------------------------------------------------------- 1 | $FreeBSD: src/tools/regression/fstest/LICENSE,v 1.1 2007/01/17 01:42:07 pjd Exp $ 2 | 3 | License for all regression tests available with fstest: 4 | 5 | Copyright (c) 2006-2007 Pawel Jakub Dawidek 6 | All rights reserved. 7 | 8 | Redistribution and use in source and binary forms, with or without 9 | modification, are permitted provided that the following conditions 10 | are met: 11 | 1. Redistributions of source code must retain the above copyright 12 | notice, this list of conditions and the following disclaimer. 13 | 2. Redistributions in binary form must reproduce the above copyright 14 | notice, this list of conditions and the following disclaimer in the 15 | documentation and/or other materials provided with the distribution. 16 | 17 | THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND 18 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 20 | ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE 21 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 22 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 23 | OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 24 | HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25 | LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 26 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27 | SUCH DAMAGE. 28 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # $FreeBSD: src/tools/regression/fstest/Makefile,v 1.1 2007/01/17 01:42:07 pjd Exp $ 2 | 3 | #CFLAGS+=-DHAS_LCHMOD 4 | #CFLAGS+=-DHAS_CHFLAGS 5 | #CFLAGS+=-DHAS_LCHFLAGS 6 | #CFLAGS+=-DHAS_TRUNCATE64 7 | #CFLAGS+=-DHAS_STAT64 8 | 9 | all: fstest 10 | 11 | fstest: fstest.c 12 | gcc -Wall ${CFLAGS} fstest.c -o fstest 13 | 14 | clean: 15 | rm -f fstest 16 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | $FreeBSD: src/tools/regression/fstest/README,v 1.1 2007/01/28 00:10:28 pjd Exp $ 2 | 3 | Few notes on how to use fstest in short steps: 4 | 5 | # cd fstest 6 | # vi tests/conf 7 | Change 'fs' to file system type you want to test. These can be: 8 | UFS, ZFS, ext3, ntfs-3g and xfs. 9 | # vi Makefile 10 | You may need to manually tweak few things by editing CFLAGS lines 11 | at the top of the file. 12 | # make 13 | It will compile fstest utility which is used by regression tests. 14 | # cd /path/to/file/system/you/want/to/test/ 15 | The test must be run as root user. 16 | # prove -r /path/to/fstest/ 17 | 18 | That's all. Enjoy. 19 | 20 | Currently supported operating systems: FreeBSD, Solaris, Linux. 21 | Currently supported file system types: UFS, ZFS, ext3, ntfs-3g, xfs. 22 | 23 | Author: 24 | Pawel Jakub Dawidek 25 | 26 | Linux port: 27 | Jean-Pierre Andre 28 | Szabolcs Szakacsits 29 | -------------------------------------------------------------------------------- /tests/chflags/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/00.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags changes flags" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..191" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n2} 0755 18 | cdir=`pwd` 19 | cd ${n2} 20 | 21 | expect 0 create ${n0} 0644 22 | expect none stat ${n0} flags 23 | expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 24 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags 25 | expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE 26 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags 27 | expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 28 | expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags 29 | expect 0 chflags ${n0} none 30 | expect none stat ${n0} flags 31 | expect 0 unlink ${n0} 32 | 33 | expect 0 mkdir ${n0} 0644 34 | expect none stat ${n0} flags 35 | expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 36 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags 37 | expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE 38 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags 39 | expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 40 | expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags 41 | expect 0 chflags ${n0} none 42 | expect none stat ${n0} flags 43 | expect 0 rmdir ${n0} 44 | 45 | expect 0 mkfifo ${n0} 0644 46 | expect none stat ${n0} flags 47 | expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 48 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags 49 | expect 0 chflags ${n0} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE 50 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n0} flags 51 | expect 0 chflags ${n0} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 52 | expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n0} flags 53 | expect 0 chflags ${n0} none 54 | expect none stat ${n0} flags 55 | expect 0 unlink ${n0} 56 | 57 | expect 0 create ${n0} 0644 58 | expect 0 symlink ${n0} ${n1} 59 | expect none stat ${n1} flags 60 | expect none lstat ${n1} flags 61 | expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 62 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags 63 | expect none lstat ${n1} flags 64 | expect 0 chflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE 65 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE stat ${n1} flags 66 | expect none lstat ${n1} flags 67 | expect 0 chflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 68 | expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK stat ${n1} flags 69 | expect none lstat ${n1} flags 70 | expect 0 chflags ${n1} none 71 | expect none stat ${n1} flags 72 | expect none lstat ${n1} flags 73 | expect 0 unlink ${n1} 74 | expect 0 unlink ${n0} 75 | 76 | expect 0 create ${n0} 0644 77 | expect 0 symlink ${n0} ${n1} 78 | expect none stat ${n1} flags 79 | expect none lstat ${n1} flags 80 | expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 81 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE,SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags 82 | expect none stat ${n1} flags 83 | expect 0 lchflags ${n1} UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE 84 | expect UF_NODUMP,UF_IMMUTABLE,UF_APPEND,UF_NOUNLINK,UF_OPAQUE lstat ${n1} flags 85 | expect none stat ${n1} flags 86 | expect 0 lchflags ${n1} SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK 87 | expect SF_ARCHIVED,SF_IMMUTABLE,SF_APPEND,SF_NOUNLINK lstat ${n1} flags 88 | expect none stat ${n1} flags 89 | expect 0 lchflags ${n1} none 90 | expect none lstat ${n1} flags 91 | expect none stat ${n1} flags 92 | expect 0 unlink ${n1} 93 | expect 0 unlink ${n0} 94 | 95 | # successful chflags(2) updates ctime. 96 | expect 0 create ${n0} 0644 97 | for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do 98 | ctime1=`${fstest} stat ${n0} ctime` 99 | sleep 1 100 | expect 0 chflags ${n0} ${flag} 101 | ctime2=`${fstest} stat ${n0} ctime` 102 | test_check $ctime1 -lt $ctime2 103 | done 104 | expect 0 unlink ${n0} 105 | 106 | expect 0 mkdir ${n0} 0755 107 | for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do 108 | ctime1=`${fstest} stat ${n0} ctime` 109 | sleep 1 110 | expect 0 chflags ${n0} ${flag} 111 | ctime2=`${fstest} stat ${n0} ctime` 112 | test_check $ctime1 -lt $ctime2 113 | done 114 | expect 0 rmdir ${n0} 115 | 116 | expect 0 mkfifo ${n0} 0644 117 | for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do 118 | ctime1=`${fstest} stat ${n0} ctime` 119 | sleep 1 120 | expect 0 chflags ${n0} ${flag} 121 | ctime2=`${fstest} stat ${n0} ctime` 122 | test_check $ctime1 -lt $ctime2 123 | done 124 | expect 0 unlink ${n0} 125 | 126 | expect 0 symlink ${n1} ${n0} 127 | for flag in UF_NODUMP UF_IMMUTABLE UF_APPEND UF_NOUNLINK UF_OPAQUE SF_ARCHIVED SF_IMMUTABLE SF_APPEND SF_NOUNLINK none; do 128 | ctime1=`${fstest} lstat ${n0} ctime` 129 | sleep 1 130 | expect 0 lchflags ${n0} ${flag} 131 | ctime2=`${fstest} lstat ${n0} ctime` 132 | test_check $ctime1 -lt $ctime2 133 | done 134 | expect 0 unlink ${n0} 135 | 136 | # unsuccessful chflags(2) does not update ctime. 137 | expect 0 create ${n0} 0644 138 | for flag in UF_IMMUTABLE SF_IMMUTABLE none; do 139 | ctime1=`${fstest} stat ${n0} ctime` 140 | sleep 1 141 | expect EPERM -u 65534 chflags ${n0} ${flag} 142 | ctime2=`${fstest} stat ${n0} ctime` 143 | test_check $ctime1 -eq $ctime2 144 | done 145 | expect 0 unlink ${n0} 146 | 147 | expect 0 mkdir ${n0} 0755 148 | for flag in UF_IMMUTABLE SF_IMMUTABLE none; do 149 | ctime1=`${fstest} stat ${n0} ctime` 150 | sleep 1 151 | expect EPERM -u 65534 chflags ${n0} ${flag} 152 | ctime2=`${fstest} stat ${n0} ctime` 153 | test_check $ctime1 -eq $ctime2 154 | done 155 | expect 0 rmdir ${n0} 156 | 157 | expect 0 mkfifo ${n0} 0644 158 | for flag in UF_IMMUTABLE SF_IMMUTABLE none; do 159 | ctime1=`${fstest} stat ${n0} ctime` 160 | sleep 1 161 | expect EPERM -u 65534 chflags ${n0} ${flag} 162 | ctime2=`${fstest} stat ${n0} ctime` 163 | test_check $ctime1 -eq $ctime2 164 | done 165 | expect 0 unlink ${n0} 166 | 167 | expect 0 symlink ${n1} ${n0} 168 | for flag in UF_IMMUTABLE SF_IMMUTABLE none; do 169 | ctime1=`${fstest} lstat ${n0} ctime` 170 | sleep 1 171 | expect EPERM -u 65534 lchflags ${n0} ${flag} 172 | ctime2=`${fstest} lstat ${n0} ctime` 173 | test_check $ctime1 -eq $ctime2 174 | done 175 | expect 0 unlink ${n0} 176 | 177 | cd ${cdir} 178 | expect 0 rmdir ${n2} 179 | -------------------------------------------------------------------------------- /tests/chflags/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/01.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..5" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | expect 0 create ${n0}/${n1} 0644 18 | expect ENOTDIR chflags ${n0}/${n1}/test UF_IMMUTABLE 19 | expect 0 unlink ${n0}/${n1} 20 | expect 0 rmdir ${n0} 21 | -------------------------------------------------------------------------------- /tests/chflags/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/02.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..6" 12 | 13 | expect 0 create ${name255} 0644 14 | expect 0 chflags ${name255} UF_IMMUTABLE 15 | expect UF_IMMUTABLE stat ${name255} flags 16 | expect 0 chflags ${name255} none 17 | expect 0 unlink ${name255} 18 | expect ENAMETOOLONG chflags ${name256} UF_IMMUTABLE 19 | -------------------------------------------------------------------------------- /tests/chflags/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/03.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..13" 12 | 13 | expect 0 mkdir ${name255} 0755 14 | expect 0 mkdir ${name255}/${name255} 0755 15 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 16 | expect 0 mkdir ${path1021} 0755 17 | expect 0 create ${path1023} 0644 18 | expect 0 chflags ${path1023} UF_IMMUTABLE 19 | expect 0 chflags ${path1023} none 20 | expect 0 unlink ${path1023} 21 | expect ENAMETOOLONG chflags ${path1024} UF_IMMUTABLE 22 | expect 0 rmdir ${path1021} 23 | expect 0 rmdir ${name255}/${name255}/${name255} 24 | expect 0 rmdir ${name255}/${name255} 25 | expect 0 rmdir ${name255} 26 | -------------------------------------------------------------------------------- /tests/chflags/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/04.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns ENOENT if the named file does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..4" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | expect ENOENT chflags ${n0}/${n1}/test UF_IMMUTABLE 18 | expect ENOENT chflags ${n0}/${n1} UF_IMMUTABLE 19 | expect 0 rmdir ${n0} 20 | -------------------------------------------------------------------------------- /tests/chflags/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/05.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..16" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | expect 0 mkdir ${n1} 0755 21 | expect 0 chown ${n1} 65534 65534 22 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 23 | expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE 24 | expect UF_IMMUTABLE -u 65534 -g 65534 stat ${n1}/${n2} flags 25 | expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none 26 | expect 0 chmod ${n1} 0644 27 | expect EACCES -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE 28 | expect 0 chmod ${n1} 0755 29 | expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} UF_IMMUTABLE 30 | expect UF_IMMUTABLE -u 65534 -g 65534 stat ${n1}/${n2} flags 31 | expect 0 -u 65534 -g 65534 chflags ${n1}/${n2} none 32 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 33 | expect 0 rmdir ${n1} 34 | cd ${cdir} 35 | expect 0 rmdir ${n0} 36 | -------------------------------------------------------------------------------- /tests/chflags/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/06.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..6" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 symlink ${n0} ${n1} 17 | expect 0 symlink ${n1} ${n0} 18 | expect ELOOP chflags ${n0}/test UF_IMMUTABLE 19 | expect ELOOP chflags ${n1}/test UF_IMMUTABLE 20 | expect 0 unlink ${n0} 21 | expect 0 unlink ${n1} 22 | -------------------------------------------------------------------------------- /tests/chflags/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/07.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EPERM when the effective user ID does not match the owner of the file and the effective user ID is not the super-user" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 create ${n1} 0644 22 | expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 23 | expect none stat ${n1} flags 24 | expect 0 chown ${n1} 65534 65534 25 | expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 26 | expect none stat ${n1} flags 27 | expect 0 unlink ${n1} 28 | 29 | expect 0 mkdir ${n1} 0755 30 | expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 31 | expect none stat ${n1} flags 32 | expect 0 chown ${n1} 65534 65534 33 | expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 34 | expect none stat ${n1} flags 35 | expect 0 rmdir ${n1} 36 | 37 | expect 0 mkfifo ${n1} 0644 38 | expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 39 | expect none stat ${n1} flags 40 | expect 0 chown ${n1} 65534 65534 41 | expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 42 | expect none stat ${n1} flags 43 | expect 0 unlink ${n1} 44 | 45 | expect 0 symlink ${n2} ${n1} 46 | expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE 47 | expect none lstat ${n1} flags 48 | expect 0 lchown ${n1} 65534 65534 49 | expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE 50 | expect none lstat ${n1} flags 51 | expect 0 unlink ${n1} 52 | 53 | cd ${cdir} 54 | expect 0 rmdir ${n0} 55 | -------------------------------------------------------------------------------- /tests/chflags/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/08.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and the user is not the super-user" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..78" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 create ${n1} 0644 22 | expect 0 chown ${n1} 65534 65534 23 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 24 | expect 0 chflags ${n1} ${flag} 25 | expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 26 | expect ${flag} stat ${n1} flags 27 | expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 28 | expect ${flag} stat ${n1} flags 29 | done 30 | expect 0 chflags ${n1} none 31 | expect 0 unlink ${n1} 32 | 33 | expect 0 mkdir ${n1} 0755 34 | expect 0 chown ${n1} 65534 65534 35 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 36 | expect 0 chflags ${n1} ${flag} 37 | expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 38 | expect ${flag} stat ${n1} flags 39 | expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 40 | expect ${flag} stat ${n1} flags 41 | done 42 | expect 0 chflags ${n1} none 43 | expect 0 rmdir ${n1} 44 | 45 | expect 0 mkfifo ${n1} 0644 46 | expect 0 chown ${n1} 65534 65534 47 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 48 | expect 0 chflags ${n1} ${flag} 49 | expect EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 50 | expect ${flag} stat ${n1} flags 51 | expect EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 52 | expect ${flag} stat ${n1} flags 53 | done 54 | expect 0 chflags ${n1} none 55 | expect 0 unlink ${n1} 56 | 57 | expect 0 symlink ${n2} ${n1} 58 | expect 0 lchown ${n1} 65534 65534 59 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 60 | expect 0 lchflags ${n1} ${flag} 61 | expect EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE 62 | expect ${flag} lstat ${n1} flags 63 | expect EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE 64 | expect ${flag} lstat ${n1} flags 65 | done 66 | expect 0 lchflags ${n1} none 67 | expect 0 unlink ${n1} 68 | 69 | cd ${cdir} 70 | expect 0 rmdir ${n0} 71 | -------------------------------------------------------------------------------- /tests/chflags/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/09.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EPERM when one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK is set and securelevel is greater than 0" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..102" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | old=`sysctl -n security.jail.chflags_allowed` 18 | sysctl security.jail.chflags_allowed=1 >/dev/null 19 | 20 | expect 0 mkdir ${n0} 0755 21 | cdir=`pwd` 22 | cd ${n0} 23 | 24 | expect 0 create ${n1} 0644 25 | expect 0 chown ${n1} 65534 65534 26 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 27 | expect 0 chflags ${n1} ${flag} 28 | jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE 29 | expect ${flag} stat ${n1} flags 30 | jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 31 | expect ${flag} stat ${n1} flags 32 | jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 33 | expect ${flag} stat ${n1} flags 34 | done 35 | expect 0 chflags ${n1} none 36 | expect 0 unlink ${n1} 37 | 38 | expect 0 mkdir ${n1} 0755 39 | expect 0 chown ${n1} 65534 65534 40 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 41 | expect 0 chflags ${n1} ${flag} 42 | jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE 43 | expect ${flag} stat ${n1} flags 44 | jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 45 | expect ${flag} stat ${n1} flags 46 | jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 47 | expect ${flag} stat ${n1} flags 48 | done 49 | expect 0 chflags ${n1} none 50 | expect 0 rmdir ${n1} 51 | 52 | expect 0 mkfifo ${n1} 0644 53 | expect 0 chown ${n1} 65534 65534 54 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 55 | expect 0 chflags ${n1} ${flag} 56 | jexpect 1 `pwd` EPERM chflags ${n1} UF_IMMUTABLE 57 | expect ${flag} stat ${n1} flags 58 | jexpect 1 `pwd` EPERM -u 65533 -g 65533 chflags ${n1} UF_IMMUTABLE 59 | expect ${flag} stat ${n1} flags 60 | jexpect 1 `pwd` EPERM -u 65534 -g 65534 chflags ${n1} UF_IMMUTABLE 61 | expect ${flag} stat ${n1} flags 62 | done 63 | expect 0 chflags ${n1} none 64 | expect 0 unlink ${n1} 65 | 66 | expect 0 symlink ${n2} ${n1} 67 | expect 0 lchown ${n1} 65534 65534 68 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 69 | expect 0 lchflags ${n1} ${flag} 70 | jexpect 1 `pwd` EPERM lchflags ${n1} UF_IMMUTABLE 71 | expect ${flag} lstat ${n1} flags 72 | jexpect 1 `pwd` EPERM -u 65533 -g 65533 lchflags ${n1} UF_IMMUTABLE 73 | expect ${flag} lstat ${n1} flags 74 | jexpect 1 `pwd` EPERM -u 65534 -g 65534 lchflags ${n1} UF_IMMUTABLE 75 | expect ${flag} lstat ${n1} flags 76 | done 77 | expect 0 lchflags ${n1} none 78 | expect 0 unlink ${n1} 79 | 80 | sysctl security.jail.chflags_allowed=${old} >/dev/null 81 | cd ${cdir} 82 | expect 0 rmdir ${n0} 83 | -------------------------------------------------------------------------------- /tests/chflags/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/10.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EPERM if non-super-user tries to set one of SF_IMMUTABLE, SF_APPEND, or SF_NOUNLINK" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..62" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 create ${n1} 0644 22 | expect 0 chown ${n1} 65534 65534 23 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 24 | expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} 25 | expect none stat ${n1} flags 26 | expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} 27 | expect none stat ${n1} flags 28 | done 29 | expect 0 unlink ${n1} 30 | 31 | expect 0 mkdir ${n1} 0755 32 | expect 0 chown ${n1} 65534 65534 33 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 34 | expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} 35 | expect none stat ${n1} flags 36 | expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} 37 | expect none stat ${n1} flags 38 | done 39 | expect 0 rmdir ${n1} 40 | 41 | expect 0 mkfifo ${n1} 0644 42 | expect 0 chown ${n1} 65534 65534 43 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 44 | expect EPERM -u 65533 -g 65533 chflags ${n1} ${flag} 45 | expect none stat ${n1} flags 46 | expect EPERM -u 65534 -g 65534 chflags ${n1} ${flag} 47 | expect none stat ${n1} flags 48 | done 49 | expect 0 unlink ${n1} 50 | 51 | expect 0 symlink ${n2} ${n1} 52 | expect 0 lchown ${n1} 65534 65534 53 | for flag in SF_IMMUTABLE SF_APPEND SF_NOUNLINK; do 54 | expect EPERM -u 65533 -g 65533 lchflags ${n1} ${flag} 55 | expect none lstat ${n1} flags 56 | expect EPERM -u 65534 -g 65534 lchflags ${n1} ${flag} 57 | expect none lstat ${n1} flags 58 | done 59 | expect 0 unlink ${n1} 60 | 61 | cd ${cdir} 62 | expect 0 rmdir ${n0} 63 | -------------------------------------------------------------------------------- /tests/chflags/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/11.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EPERM if a user tries to set or remove the SF_SNAPSHOT flag" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..46" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 create ${n1} 0644 22 | expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT 23 | expect none stat ${n1} flags 24 | expect EPERM chflags ${n1} SF_SNAPSHOT 25 | expect none stat ${n1} flags 26 | expect 0 chown ${n1} 65534 65534 27 | expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT 28 | expect none stat ${n1} flags 29 | expect EPERM chflags ${n1} SF_SNAPSHOT 30 | expect none stat ${n1} flags 31 | expect 0 unlink ${n1} 32 | 33 | expect 0 mkdir ${n1} 0644 34 | expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT 35 | expect none stat ${n1} flags 36 | expect EPERM chflags ${n1} SF_SNAPSHOT 37 | expect none stat ${n1} flags 38 | expect 0 chown ${n1} 65534 65534 39 | expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT 40 | expect none stat ${n1} flags 41 | expect EPERM chflags ${n1} SF_SNAPSHOT 42 | expect none stat ${n1} flags 43 | expect 0 rmdir ${n1} 44 | 45 | expect 0 mkfifo ${n1} 0644 46 | expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT 47 | expect none stat ${n1} flags 48 | expect EPERM chflags ${n1} SF_SNAPSHOT 49 | expect none stat ${n1} flags 50 | expect 0 chown ${n1} 65534 65534 51 | expect EPERM -u 65534 -g 65534 chflags ${n1} SF_SNAPSHOT 52 | expect none stat ${n1} flags 53 | expect EPERM chflags ${n1} SF_SNAPSHOT 54 | expect none stat ${n1} flags 55 | expect 0 unlink ${n1} 56 | 57 | expect 0 symlink ${n2} ${n1} 58 | expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT 59 | expect none lstat ${n1} flags 60 | expect EPERM lchflags ${n1} SF_SNAPSHOT 61 | expect none lstat ${n1} flags 62 | expect 0 lchown ${n1} 65534 65534 63 | expect EPERM -u 65534 -g 65534 lchflags ${n1} SF_SNAPSHOT 64 | expect none lstat ${n1} flags 65 | expect EPERM lchflags ${n1} SF_SNAPSHOT 66 | expect none lstat ${n1} flags 67 | expect 0 unlink ${n1} 68 | 69 | cd ${cdir} 70 | expect 0 rmdir ${n0} 71 | -------------------------------------------------------------------------------- /tests/chflags/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/12.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | case "${os}:${fs}" in 12 | FreeBSD:UFS) 13 | echo "1..14" 14 | 15 | n0=`namegen` 16 | n1=`namegen` 17 | 18 | expect 0 mkdir ${n0} 0755 19 | n=`mdconfig -a -n -t malloc -s 1m` 20 | newfs /dev/md${n} >/dev/null 21 | mount /dev/md${n} ${n0} 22 | expect 0 create ${n0}/${n1} 0644 23 | expect 0 chflags ${n0}/${n1} UF_IMMUTABLE 24 | expect UF_IMMUTABLE stat ${n0}/${n1} flags 25 | expect 0 chflags ${n0}/${n1} none 26 | expect none stat ${n0}/${n1} flags 27 | mount -ur /dev/md${n} 28 | expect EROFS chflags ${n0}/${n1} UF_IMMUTABLE 29 | expect none stat ${n0}/${n1} flags 30 | mount -uw /dev/md${n} 31 | expect 0 chflags ${n0}/${n1} UF_IMMUTABLE 32 | expect UF_IMMUTABLE stat ${n0}/${n1} flags 33 | expect 0 chflags ${n0}/${n1} none 34 | expect none stat ${n0}/${n1} flags 35 | expect 0 unlink ${n0}/${n1} 36 | umount /dev/md${n} 37 | mdconfig -d -u ${n} 38 | expect 0 rmdir ${n0} 39 | ;; 40 | *) 41 | quick_exit 42 | ;; 43 | esac 44 | -------------------------------------------------------------------------------- /tests/chflags/13.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chflags/13.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chflags returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..2" 12 | 13 | expect EFAULT chflags NULL UF_IMMUTABLE 14 | expect EFAULT chflags DEADCODE UF_IMMUTABLE 15 | -------------------------------------------------------------------------------- /tests/chmod/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/00.t,v 1.2 2007/01/25 20:48:14 pjd Exp $ 3 | 4 | desc="chmod changes permission" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | if supported lchmod; then 10 | echo "1..77" 11 | else 12 | echo "1..58" 13 | fi 14 | 15 | n0=`namegen` 16 | n1=`namegen` 17 | n2=`namegen` 18 | 19 | expect 0 mkdir ${n2} 0755 20 | cdir=`pwd` 21 | cd ${n2} 22 | 23 | expect 0 create ${n0} 0644 24 | expect 0644 stat ${n0} mode 25 | expect 0 chmod ${n0} 0111 26 | expect 0111 stat ${n0} mode 27 | expect 0 unlink ${n0} 28 | 29 | expect 0 mkdir ${n0} 0755 30 | expect 0755 stat ${n0} mode 31 | expect 0 chmod ${n0} 0753 32 | expect 0753 stat ${n0} mode 33 | expect 0 rmdir ${n0} 34 | 35 | expect 0 mkfifo ${n0} 0644 36 | expect 0644 stat ${n0} mode 37 | expect 0 chmod ${n0} 0310 38 | expect 0310 stat ${n0} mode 39 | expect 0 unlink ${n0} 40 | 41 | expect 0 create ${n0} 0644 42 | expect 0 symlink ${n0} ${n1} 43 | expect 0644 stat ${n1} mode 44 | expect 0 chmod ${n1} 0321 45 | expect 0321 stat ${n1} mode 46 | expect 0321 lstat ${n0} mode 47 | expect 0 unlink ${n0} 48 | expect 0 unlink ${n1} 49 | 50 | if supported lchmod; then 51 | expect 0 create ${n0} 0644 52 | expect 0 symlink ${n0} ${n1} 53 | expect 0644 stat ${n1} mode 54 | expect 0 lchmod ${n1} 0321 55 | expect 0321 lstat ${n1} mode 56 | expect 0 lchmod ${n1} 0531 57 | expect 0531 lstat ${n1} mode 58 | expect 0644 stat ${n0} mode 59 | expect 0644 stat ${n1} mode 60 | expect 0 unlink ${n0} 61 | expect 0 unlink ${n1} 62 | fi 63 | 64 | # successful chmod(2) updates ctime. 65 | expect 0 create ${n0} 0644 66 | ctime1=`${fstest} stat ${n0} ctime` 67 | sleep 1 68 | expect 0 chmod ${n0} 0111 69 | ctime2=`${fstest} stat ${n0} ctime` 70 | test_check $ctime1 -lt $ctime2 71 | expect 0 unlink ${n0} 72 | 73 | expect 0 mkdir ${n0} 0755 74 | ctime1=`${fstest} stat ${n0} ctime` 75 | sleep 1 76 | expect 0 chmod ${n0} 0753 77 | ctime2=`${fstest} stat ${n0} ctime` 78 | test_check $ctime1 -lt $ctime2 79 | expect 0 rmdir ${n0} 80 | 81 | expect 0 mkfifo ${n0} 0644 82 | ctime1=`${fstest} stat ${n0} ctime` 83 | sleep 1 84 | expect 0 chmod ${n0} 0310 85 | ctime2=`${fstest} stat ${n0} ctime` 86 | test_check $ctime1 -lt $ctime2 87 | expect 0 unlink ${n0} 88 | 89 | if supported lchmod; then 90 | expect 0 symlink ${n1} ${n0} 91 | ctime1=`${fstest} lstat ${n0} ctime` 92 | sleep 1 93 | expect 0 lchmod ${n0} 0321 94 | ctime2=`${fstest} lstat ${n0} ctime` 95 | test_check $ctime1 -lt $ctime2 96 | expect 0 unlink ${n0} 97 | fi 98 | 99 | # unsuccessful chmod(2) does not update ctime. 100 | expect 0 create ${n0} 0644 101 | ctime1=`${fstest} stat ${n0} ctime` 102 | sleep 1 103 | expect EPERM -u 65534 chmod ${n0} 0111 104 | ctime2=`${fstest} stat ${n0} ctime` 105 | test_check $ctime1 -eq $ctime2 106 | expect 0 unlink ${n0} 107 | 108 | expect 0 mkdir ${n0} 0755 109 | ctime1=`${fstest} stat ${n0} ctime` 110 | sleep 1 111 | expect EPERM -u 65534 chmod ${n0} 0753 112 | ctime2=`${fstest} stat ${n0} ctime` 113 | test_check $ctime1 -eq $ctime2 114 | expect 0 rmdir ${n0} 115 | 116 | expect 0 mkfifo ${n0} 0644 117 | ctime1=`${fstest} stat ${n0} ctime` 118 | sleep 1 119 | expect EPERM -u 65534 chmod ${n0} 0310 120 | ctime2=`${fstest} stat ${n0} ctime` 121 | test_check $ctime1 -eq $ctime2 122 | expect 0 unlink ${n0} 123 | 124 | if supported lchmod; then 125 | expect 0 symlink ${n1} ${n0} 126 | ctime1=`${fstest} lstat ${n0} ctime` 127 | sleep 1 128 | expect EPERM -u 65534 lchmod ${n0} 0321 129 | ctime2=`${fstest} lstat ${n0} ctime` 130 | test_check $ctime1 -eq $ctime2 131 | expect 0 unlink ${n0} 132 | fi 133 | 134 | # POSIX: If the calling process does not have appropriate privileges, and if 135 | # the group ID of the file does not match the effective group ID or one of the 136 | # supplementary group IDs and if the file is a regular file, bit S_ISGID 137 | # (set-group-ID on execution) in the file's mode shall be cleared upon 138 | # successful return from chmod(). 139 | 140 | expect 0 create ${n0} 0755 141 | expect 0 chown ${n0} 65535 65535 142 | expect 0 -u 65535 -g 65535 chmod ${n0} 02755 143 | expect 02755 stat ${n0} mode 144 | expect 0 -u 65535 -g 65535 chmod ${n0} 0755 145 | expect 0755 stat ${n0} mode 146 | 147 | # Unfortunately FreeBSD doesn't clear set-gid bit, but returns EPERM instead. 148 | case "${os}" in 149 | FreeBSD) 150 | expect EPERM -u 65535 -g 65534 chmod ${n0} 02755 151 | expect 0755 stat ${n0} mode 152 | ;; 153 | *) 154 | expect 0 -u 65535 -g 65534 chmod ${n0} 02755 155 | expect 0755 stat ${n0} mode 156 | ;; 157 | esac 158 | expect 0 unlink ${n0} 159 | 160 | cd ${cdir} 161 | expect 0 rmdir ${n2} 162 | -------------------------------------------------------------------------------- /tests/chmod/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/01.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR chmod ${n0}/${n1}/test 0644 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/chmod/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/02.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | expect 0 create ${name255} 0644 12 | expect 0 chmod ${name255} 0620 13 | expect 0620 stat ${name255} mode 14 | expect 0 unlink ${name255} 15 | expect ENAMETOOLONG chmod ${name256} 0620 16 | -------------------------------------------------------------------------------- /tests/chmod/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/03.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 create ${path1023} 0644 16 | expect 0 chmod ${path1023} 0642 17 | expect 0 unlink ${path1023} 18 | create_too_long 19 | expect ENAMETOOLONG chmod ${too_long} 0642 20 | unlink_too_long 21 | expect 0 rmdir ${path1021} 22 | expect 0 rmdir ${name255}/${name255}/${name255} 23 | expect 0 rmdir ${name255}/${name255} 24 | expect 0 rmdir ${name255} 25 | -------------------------------------------------------------------------------- /tests/chmod/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/04.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns ENOENT if the named file does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect ENOENT chmod ${n0}/${n1}/test 0644 16 | expect ENOENT chmod ${n0}/${n1} 0644 17 | expect 0 rmdir ${n0} 18 | -------------------------------------------------------------------------------- /tests/chmod/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/05.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..14" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 22 | expect 0642 -u 65534 -g 65534 stat ${n1}/${n2} mode 23 | expect 0 chmod ${n1} 0644 24 | expect EACCES -u 65534 -g 65534 chmod ${n1}/${n2} 0620 25 | expect 0 chmod ${n1} 0755 26 | expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0420 27 | expect 0420 -u 65534 -g 65534 stat ${n1}/${n2} mode 28 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 29 | expect 0 rmdir ${n1} 30 | cd ${cdir} 31 | expect 0 rmdir ${n0} 32 | -------------------------------------------------------------------------------- /tests/chmod/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/06.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP chmod ${n0}/test 0644 17 | expect ELOOP chmod ${n1}/test 0644 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/chmod/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/07.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..14" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect 0 -u 65534 -g 65534 chmod ${n1}/${n2} 0642 22 | expect 0642 stat ${n1}/${n2} mode 23 | expect EPERM -u 65533 -g 65533 chmod ${n1}/${n2} 0641 24 | expect 0642 stat ${n1}/${n2} mode 25 | expect 0 chown ${n1}/${n2} 0 0 26 | expect EPERM -u 65534 -g 65534 chmod ${n1}/${n2} 0641 27 | expect 0642 stat ${n1}/${n2} mode 28 | expect 0 unlink ${n1}/${n2} 29 | expect 0 rmdir ${n1} 30 | cd ${cdir} 31 | expect 0 rmdir ${n0} 32 | -------------------------------------------------------------------------------- /tests/chmod/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/08.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns EPERM if the named file has its immutable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..40" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 create ${n0} 0644 16 | expect 0 chflags ${n0} SF_IMMUTABLE 17 | expect EPERM chmod ${n0} 0600 18 | expect 0644 stat ${n0} mode 19 | expect 0 chflags ${n0} none 20 | expect 0 chmod ${n0} 0600 21 | expect 0 unlink ${n0} 22 | 23 | expect 0 create ${n0} 0644 24 | expect 0 chflags ${n0} UF_IMMUTABLE 25 | expect EPERM chmod ${n0} 0600 26 | expect 0644 stat ${n0} mode 27 | expect 0 chflags ${n0} none 28 | expect 0 chmod ${n0} 0600 29 | expect 0 unlink ${n0} 30 | 31 | expect 0 create ${n0} 0644 32 | expect 0 chflags ${n0} SF_APPEND 33 | expect EPERM chmod ${n0} 0600 34 | expect 0644 stat ${n0} mode 35 | expect 0 chflags ${n0} none 36 | expect 0 chmod ${n0} 0600 37 | expect 0 unlink ${n0} 38 | 39 | expect 0 create ${n0} 0644 40 | expect 0 chflags ${n0} UF_APPEND 41 | expect EPERM chmod ${n0} 0600 42 | expect 0644 stat ${n0} mode 43 | expect 0 chflags ${n0} none 44 | expect 0 chmod ${n0} 0600 45 | expect 0 unlink ${n0} 46 | 47 | expect 0 create ${n0} 0644 48 | expect 0 chflags ${n0} SF_NOUNLINK 49 | expect 0 chmod ${n0} 0600 50 | expect 0600 stat ${n0} mode 51 | expect 0 chflags ${n0} none 52 | expect 0 unlink ${n0} 53 | 54 | expect 0 create ${n0} 0644 55 | expect 0 chflags ${n0} UF_NOUNLINK 56 | expect 0 chmod ${n0} 0600 57 | expect 0600 stat ${n0} mode 58 | expect 0 chflags ${n0} none 59 | expect 0 unlink ${n0} 60 | -------------------------------------------------------------------------------- /tests/chmod/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/09.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..10" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 create ${n0}/${n1} 0644 21 | expect 0 chmod ${n0}/${n1} 0640 22 | expect 0640 stat ${n0}/${n1} mode 23 | mount -ur /dev/md${n} 24 | expect EROFS chmod ${n0}/${n1} 0600 25 | expect 0640 stat ${n0}/${n1} mode 26 | mount -uw /dev/md${n} 27 | expect 0 chmod ${n0}/${n1} 0600 28 | expect 0600 stat ${n0}/${n1} mode 29 | expect 0 unlink ${n0}/${n1} 30 | umount /dev/md${n} 31 | mdconfig -d -u ${n} 32 | expect 0 rmdir ${n0} 33 | ;; 34 | *) 35 | quick_exit 36 | ;; 37 | esac 38 | -------------------------------------------------------------------------------- /tests/chmod/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/10.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT chmod NULL 0644 12 | expect EFAULT chmod DEADCODE 0644 13 | -------------------------------------------------------------------------------- /tests/chmod/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chmod/11.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chmod returns EFTYPE if the effective user ID is not the super-user, the mode includes the sticky bit (S_ISVTX), and path does not refer to a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..20" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | cdir=`pwd` 16 | cd ${n0} 17 | 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chmod ${n1} 01755 20 | expect 01755 stat ${n1} mode 21 | expect 0 rmdir ${n1} 22 | 23 | expect 0 create ${n1} 0644 24 | expect 0 chmod ${n1} 01644 25 | expect 01644 stat ${n1} mode 26 | expect 0 unlink ${n1} 27 | 28 | expect 0 mkdir ${n1} 0755 29 | expect 0 chown ${n1} 65534 65534 30 | expect 0 -u 65534 -g 65534 chmod ${n1} 01755 31 | expect 01755 stat ${n1} mode 32 | expect 0 rmdir ${n1} 33 | 34 | expect 0 create ${n1} 0644 35 | expect 0 chown ${n1} 65534 65534 36 | case "${os}" in 37 | FreeBSD) 38 | expect EFTYPE -u 65534 -g 65534 chmod ${n1} 01644 39 | expect 0644 stat ${n1} mode 40 | ;; 41 | SunOS) 42 | expect 0 -u 65534 -g 65534 chmod ${n1} 01644 43 | expect 0644 stat ${n1} mode 44 | ;; 45 | Linux) 46 | expect 0 -u 65534 -g 65534 chmod ${n1} 01644 47 | expect 01644 stat ${n1} mode 48 | ;; 49 | esac 50 | expect 0 unlink ${n1} 51 | 52 | cd ${cdir} 53 | expect 0 rmdir ${n0} 54 | -------------------------------------------------------------------------------- /tests/chown/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/01.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR chown ${n0}/${n1}/test 65534 65534 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/chown/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/02.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | expect 0 create ${name255} 0644 12 | expect 0 chown ${name255} 65534 65534 13 | expect 65534,65534 stat ${name255} uid,gid 14 | expect 0 unlink ${name255} 15 | expect ENAMETOOLONG chown ${name256} 65533 65533 16 | -------------------------------------------------------------------------------- /tests/chown/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/03.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 create ${path1023} 0644 16 | expect 0 chown ${path1023} 65534 65534 17 | expect 0 unlink ${path1023} 18 | create_too_long 19 | expect ENAMETOOLONG chown ${too_long} 65533 65533 20 | unlink_too_long 21 | expect 0 rmdir ${path1021} 22 | expect 0 rmdir ${name255}/${name255}/${name255} 23 | expect 0 rmdir ${name255}/${name255} 24 | expect 0 rmdir ${name255} 25 | -------------------------------------------------------------------------------- /tests/chown/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/04.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns ENOENT if the named file does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect ENOENT chown ${n0}/${n1}/test 65534 65534 16 | expect ENOENT chown ${n0}/${n1} 65534 65534 17 | expect 0 rmdir ${n0} 18 | -------------------------------------------------------------------------------- /tests/chown/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/05.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..15" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65533 22 | expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid 23 | expect 0 chmod ${n1} 0644 24 | expect EACCES -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534 25 | expect 0 chmod ${n1} 0755 26 | expect 65534,65533 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid 27 | expect 0 -u 65534 -g 65533,65534 -- chown ${n1}/${n2} -1 65534 28 | expect 65534,65534 -u 65534 -g 65534 stat ${n1}/${n2} uid,gid 29 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 30 | expect 0 rmdir ${n1} 31 | cd ${cdir} 32 | expect 0 rmdir ${n0} 33 | -------------------------------------------------------------------------------- /tests/chown/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/06.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP chown ${n0}/test 65534 65534 17 | expect ELOOP chown ${n1}/test 65534 65534 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/chown/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/07.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns EPERM if the operation would change the ownership, but the effective user ID is not the super-user and the process is not an owner of the file" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..11" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect EPERM -u 65534 -g 65534 chown ${n1}/${n2} 65533 65533 22 | expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65534 65534 23 | expect EPERM -u 65533 -g 65533 chown ${n1}/${n2} 65533 65533 24 | expect EPERM -u 65534 -g 65534 -- chown ${n1}/${n2} -1 65533 25 | expect 0 unlink ${n1}/${n2} 26 | expect 0 rmdir ${n1} 27 | cd ${cdir} 28 | expect 0 rmdir ${n0} 29 | -------------------------------------------------------------------------------- /tests/chown/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/08.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns EPERM if the named file has its immutable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..34" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 create ${n0} 0644 16 | expect 0 chflags ${n0} SF_IMMUTABLE 17 | expect EPERM chown ${n0} 65534 65534 18 | expect 0 chflags ${n0} none 19 | expect 0 chown ${n0} 65534 65534 20 | expect 0 unlink ${n0} 21 | 22 | expect 0 create ${n0} 0644 23 | expect 0 chflags ${n0} UF_IMMUTABLE 24 | expect EPERM chown ${n0} 65534 65534 25 | expect 0 chflags ${n0} none 26 | expect 0 chown ${n0} 65534 65534 27 | expect 0 unlink ${n0} 28 | 29 | expect 0 create ${n0} 0644 30 | expect 0 chflags ${n0} SF_APPEND 31 | expect EPERM chown ${n0} 65534 65534 32 | expect 0 chflags ${n0} none 33 | expect 0 chown ${n0} 65534 65534 34 | expect 0 unlink ${n0} 35 | 36 | expect 0 create ${n0} 0644 37 | expect 0 chflags ${n0} UF_APPEND 38 | expect EPERM chown ${n0} 65534 65534 39 | expect 0 chflags ${n0} none 40 | expect 0 chown ${n0} 65534 65534 41 | expect 0 unlink ${n0} 42 | 43 | expect 0 create ${n0} 0644 44 | expect 0 chflags ${n0} SF_NOUNLINK 45 | expect 0 chown ${n0} 65534 65534 46 | expect 0 chflags ${n0} none 47 | expect 0 unlink ${n0} 48 | 49 | expect 0 create ${n0} 0644 50 | expect 0 chflags ${n0} UF_NOUNLINK 51 | expect 0 chown ${n0} 65534 65534 52 | expect 0 chflags ${n0} none 53 | expect 0 unlink ${n0} 54 | -------------------------------------------------------------------------------- /tests/chown/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/09.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:{fs}" in 10 | FreeBSD:UFS) 11 | echo "1..10" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 create ${n0}/${n1} 0644 21 | expect 0 chown ${n0}/${n1} 65534 65534 22 | expect 65534,65534 stat ${n0}/${n1} uid,gid 23 | mount -ur /dev/md${n} 24 | expect EROFS chown ${n0}/${n1} 65533 65533 25 | expect 65534,65534 stat ${n0}/${n1} uid,gid 26 | mount -uw /dev/md${n} 27 | expect 0 chown ${n0}/${n1} 65533 65533 28 | expect 65533,65533 stat ${n0}/${n1} uid,gid 29 | expect 0 unlink ${n0}/${n1} 30 | umount /dev/md${n} 31 | mdconfig -d -u ${n} 32 | expect 0 rmdir ${n0} 33 | ;; 34 | *) 35 | quick_exit 36 | ;; 37 | esac 38 | -------------------------------------------------------------------------------- /tests/chown/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/chown/10.t,v 1.1 2007/01/17 01:42:08 pjd Exp $ 3 | 4 | desc="chown returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT chown NULL 65534 65534 12 | expect EFAULT chown DEADCODE 65534 65534 13 | -------------------------------------------------------------------------------- /tests/conf: -------------------------------------------------------------------------------- 1 | # $FreeBSD: src/tools/regression/fstest/tests/conf,v 1.1 2007/01/17 01:42:08 pjd Exp $ 2 | # fstest configuration file 3 | 4 | # Known operating systems: FreeBSD, SunOS, Linux 5 | os=`uname` 6 | 7 | # Known file systems: UFS, ZFS, ext3, ntfs-3g, xfs 8 | fs="ZFS" 9 | -------------------------------------------------------------------------------- /tests/link/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/00.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link creates hardlinks" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..82" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | n3=`namegen` 15 | 16 | expect 0 mkdir ${n3} 0755 17 | cdir=`pwd` 18 | cd ${n3} 19 | 20 | expect 0 create ${n0} 0644 21 | expect regular,0644,1 lstat ${n0} type,mode,nlink 22 | 23 | expect 0 link ${n0} ${n1} 24 | expect regular,0644,2 lstat ${n0} type,mode,nlink 25 | expect regular,0644,2 lstat ${n1} type,mode,nlink 26 | 27 | expect 0 link ${n1} ${n2} 28 | expect regular,0644,3 lstat ${n0} type,mode,nlink 29 | expect regular,0644,3 lstat ${n1} type,mode,nlink 30 | expect regular,0644,3 lstat ${n2} type,mode,nlink 31 | 32 | expect 0 chmod ${n1} 0201 33 | expect 0 chown ${n1} 65534 65533 34 | 35 | expect regular,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid 36 | expect regular,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid 37 | expect regular,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid 38 | 39 | expect 0 unlink ${n0} 40 | expect ENOENT lstat ${n0} type,mode,nlink,uid,gid 41 | expect regular,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid 42 | expect regular,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid 43 | 44 | expect 0 unlink ${n2} 45 | expect ENOENT lstat ${n0} type,mode,nlink,uid,gid 46 | expect regular,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid 47 | expect ENOENT lstat ${n2} type,mode,nlink,uid,gid 48 | 49 | expect 0 unlink ${n1} 50 | expect ENOENT lstat ${n0} type,mode,nlink,uid,gid 51 | expect ENOENT lstat ${n1} type,mode,nlink,uid,gid 52 | expect ENOENT lstat ${n2} type,mode,nlink,uid,gid 53 | 54 | expect 0 mkfifo ${n0} 0644 55 | expect fifo,0644,1 lstat ${n0} type,mode,nlink 56 | 57 | expect 0 link ${n0} ${n1} 58 | expect fifo,0644,2 lstat ${n0} type,mode,nlink 59 | expect fifo,0644,2 lstat ${n1} type,mode,nlink 60 | 61 | expect 0 link ${n1} ${n2} 62 | expect fifo,0644,3 lstat ${n0} type,mode,nlink 63 | expect fifo,0644,3 lstat ${n1} type,mode,nlink 64 | expect fifo,0644,3 lstat ${n2} type,mode,nlink 65 | 66 | expect 0 chmod ${n1} 0201 67 | expect 0 chown ${n1} 65534 65533 68 | 69 | expect fifo,0201,3,65534,65533 lstat ${n0} type,mode,nlink,uid,gid 70 | expect fifo,0201,3,65534,65533 lstat ${n1} type,mode,nlink,uid,gid 71 | expect fifo,0201,3,65534,65533 lstat ${n2} type,mode,nlink,uid,gid 72 | 73 | expect 0 unlink ${n0} 74 | expect ENOENT lstat ${n0} type,mode,nlink,uid,gid 75 | expect fifo,0201,2,65534,65533 lstat ${n1} type,mode,nlink,uid,gid 76 | expect fifo,0201,2,65534,65533 lstat ${n2} type,mode,nlink,uid,gid 77 | 78 | expect 0 unlink ${n2} 79 | expect ENOENT lstat ${n0} type,mode,nlink,uid,gid 80 | expect fifo,0201,1,65534,65533 lstat ${n1} type,mode,nlink,uid,gid 81 | expect ENOENT lstat ${n2} type,mode,nlink,uid,gid 82 | 83 | expect 0 unlink ${n1} 84 | expect ENOENT lstat ${n0} type,mode,nlink,uid,gid 85 | expect ENOENT lstat ${n1} type,mode,nlink,uid,gid 86 | expect ENOENT lstat ${n2} type,mode,nlink,uid,gid 87 | 88 | # successful link(2) updates ctime. 89 | expect 0 create ${n0} 0644 90 | ctime1=`${fstest} stat ${n0} ctime` 91 | dctime1=`${fstest} stat . ctime` 92 | dmtime1=`${fstest} stat . mtime` 93 | sleep 1 94 | expect 0 link ${n0} ${n1} 95 | ctime2=`${fstest} stat ${n0} ctime` 96 | test_check $ctime1 -lt $ctime2 97 | dctime2=`${fstest} stat . ctime` 98 | test_check $dctime1 -lt $dctime2 99 | dmtime2=`${fstest} stat . mtime` 100 | test_check $dctime1 -lt $dmtime2 101 | expect 0 unlink ${n0} 102 | expect 0 unlink ${n1} 103 | 104 | expect 0 mkfifo ${n0} 0644 105 | ctime1=`${fstest} stat ${n0} ctime` 106 | dctime1=`${fstest} stat . ctime` 107 | dmtime1=`${fstest} stat . mtime` 108 | sleep 1 109 | expect 0 link ${n0} ${n1} 110 | ctime2=`${fstest} stat ${n0} ctime` 111 | test_check $ctime1 -lt $ctime2 112 | dctime2=`${fstest} stat . ctime` 113 | test_check $dctime1 -lt $dctime2 114 | dmtime2=`${fstest} stat . mtime` 115 | test_check $dctime1 -lt $dmtime2 116 | expect 0 unlink ${n0} 117 | expect 0 unlink ${n1} 118 | 119 | # unsuccessful link(2) does not update ctime. 120 | expect 0 create ${n0} 0644 121 | expect 0 -- chown ${n0} 65534 -1 122 | ctime1=`${fstest} stat ${n0} ctime` 123 | dctime1=`${fstest} stat . ctime` 124 | dmtime1=`${fstest} stat . mtime` 125 | sleep 1 126 | expect EACCES -u 65534 link ${n0} ${n1} 127 | ctime2=`${fstest} stat ${n0} ctime` 128 | test_check $ctime1 -eq $ctime2 129 | dctime2=`${fstest} stat . ctime` 130 | test_check $dctime1 -eq $dctime2 131 | dmtime2=`${fstest} stat . mtime` 132 | test_check $dctime1 -eq $dmtime2 133 | expect 0 unlink ${n0} 134 | 135 | expect 0 mkfifo ${n0} 0644 136 | expect 0 -- chown ${n0} 65534 -1 137 | ctime1=`${fstest} stat ${n0} ctime` 138 | dctime1=`${fstest} stat . ctime` 139 | dmtime1=`${fstest} stat . mtime` 140 | sleep 1 141 | expect EACCES -u 65534 link ${n0} ${n1} 142 | ctime2=`${fstest} stat ${n0} ctime` 143 | test_check $ctime1 -eq $ctime2 144 | dctime2=`${fstest} stat . ctime` 145 | test_check $dctime1 -eq $dctime2 146 | dmtime2=`${fstest} stat . mtime` 147 | test_check $dctime1 -eq $dmtime2 148 | expect 0 unlink ${n0} 149 | 150 | cd ${cdir} 151 | expect 0 rmdir ${n3} 152 | -------------------------------------------------------------------------------- /tests/link/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/01.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns ENOTDIR if a component of either path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..8" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect 0 create ${n0}/${n1} 0644 17 | expect ENOTDIR link ${n0}/${n1}/test ${n0}/${n2} 18 | expect 0 create ${n0}/${n2} 0644 19 | expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test 20 | expect 0 unlink ${n0}/${n1} 21 | expect 0 unlink ${n0}/${n2} 22 | expect 0 rmdir ${n0} 23 | -------------------------------------------------------------------------------- /tests/link/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/02.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns ENAMETOOLONG if a component of either pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${name255} 0644 14 | expect 0 link ${name255} ${n0} 15 | expect 0 unlink ${name255} 16 | expect 0 link ${n0} ${name255} 17 | expect 0 unlink ${n0} 18 | expect 0 unlink ${name255} 19 | 20 | expect 0 create ${n0} 0644 21 | expect ENAMETOOLONG link ${n0} ${name256} 22 | expect 0 unlink ${n0} 23 | expect ENAMETOOLONG link ${name256} ${n0} 24 | -------------------------------------------------------------------------------- /tests/link/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/03.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..16" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 mkdir ${name255} 0755 14 | expect 0 mkdir ${name255}/${name255} 0755 15 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 16 | expect 0 mkdir ${path1021} 0755 17 | expect 0 create ${path1023} 0644 18 | expect 0 link ${path1023} ${n0} 19 | expect 0 unlink ${path1023} 20 | expect 0 link ${n0} ${path1023} 21 | expect 0 unlink ${path1023} 22 | create_too_long 23 | expect ENAMETOOLONG link ${n0} ${too_long} 24 | unlink_too_long 25 | expect 0 unlink ${n0} 26 | create_too_long 27 | expect ENAMETOOLONG link ${too_long} ${n0} 28 | unlink_too_long 29 | expect 0 rmdir ${path1021} 30 | expect 0 rmdir ${name255}/${name255}/${name255} 31 | expect 0 rmdir ${name255}/${name255} 32 | expect 0 rmdir ${name255} 33 | -------------------------------------------------------------------------------- /tests/link/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/04.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns ENOENT if a component of either path prefix does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect ENOENT link ${n0}/${n1}/test ${n2} 17 | expect 0 create ${n2} 0644 18 | expect ENOENT link ${n2} ${n0}/${n1}/test 19 | expect 0 unlink ${n2} 20 | expect 0 rmdir ${n0} 21 | -------------------------------------------------------------------------------- /tests/link/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/05.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EMLINK if the link count of the file named by name1 would exceed 32767" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..5" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 1m` 19 | newfs -i 1 /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | expect 0 create ${n0}/${n1} 0644 22 | i=1 23 | while :; do 24 | link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1 25 | if [ $? -ne 0 ]; then 26 | break 27 | fi 28 | i=`expr $i + 1` 29 | done 30 | test_check $i -eq 32767 31 | 32 | expect EMLINK link ${n0}/${n1} ${n0}/${n2} 33 | 34 | umount /dev/md${n} 35 | mdconfig -d -u ${n} 36 | expect 0 rmdir ${n0} 37 | ;; 38 | *) 39 | quick_exit 40 | ;; 41 | esac 42 | -------------------------------------------------------------------------------- /tests/link/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/06.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EACCES when a component of either path prefix denies search permission" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..18" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | n3=`namegen` 15 | n4=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 mkdir ${n1} 0755 22 | expect 0 chown ${n1} 65534 65534 23 | expect 0 mkdir ${n2} 0755 24 | expect 0 chown ${n2} 65534 65534 25 | expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 26 | 27 | expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} 28 | expect 0 -u 65534 -g 65534 unlink ${n2}/${n4} 29 | 30 | expect 0 chmod ${n1} 0644 31 | expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4} 32 | expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} 33 | 34 | expect 0 chmod ${n1} 0755 35 | expect 0 chmod ${n2} 0644 36 | expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} 37 | 38 | expect 0 unlink ${n1}/${n3} 39 | expect 0 rmdir ${n1} 40 | expect 0 rmdir ${n2} 41 | 42 | cd ${cdir} 43 | expect 0 rmdir ${n0} 44 | -------------------------------------------------------------------------------- /tests/link/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/07.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EACCES when the requested link requires writing in a directory with a mode that denies write permission" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..17" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | n3=`namegen` 15 | n4=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 mkdir ${n1} 0755 22 | expect 0 chown ${n1} 65534 65534 23 | expect 0 mkdir ${n2} 0755 24 | expect 0 chown ${n2} 65534 65534 25 | expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 26 | 27 | expect 0 -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} 28 | expect 0 -u 65534 -g 65534 unlink ${n2}/${n4} 29 | 30 | expect 0 chmod ${n2} 0555 31 | expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n2}/${n4} 32 | expect 0 chmod ${n1} 0555 33 | expect EACCES -u 65534 -g 65534 link ${n1}/${n3} ${n1}/${n4} 34 | expect 0 chmod ${n1} 0755 35 | 36 | expect 0 unlink ${n1}/${n3} 37 | expect 0 rmdir ${n1} 38 | expect 0 rmdir ${n2} 39 | 40 | cd ${cdir} 41 | expect 0 rmdir ${n0} 42 | -------------------------------------------------------------------------------- /tests/link/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/08.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns ELOOP if too many symbolic links were encountered in translating one of the pathnames" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 symlink ${n0} ${n1} 16 | expect 0 symlink ${n1} ${n0} 17 | expect ELOOP link ${n0}/test ${n2} 18 | expect ELOOP link ${n1}/test ${n2} 19 | expect 0 create ${n2} 0644 20 | expect ELOOP link ${n2} ${n0}/test 21 | expect ELOOP link ${n2} ${n1}/test 22 | expect 0 unlink ${n0} 23 | expect 0 unlink ${n1} 24 | expect 0 unlink ${n2} 25 | -------------------------------------------------------------------------------- /tests/link/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/09.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns ENOENT if the source file does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 create ${n0} 0644 15 | expect 0 link ${n0} ${n1} 16 | expect 0 unlink ${n0} 17 | expect 0 unlink ${n1} 18 | expect ENOENT link ${n0} ${n1} 19 | -------------------------------------------------------------------------------- /tests/link/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/10.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EEXIST if the destination file does exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..14" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 create ${n0} 0644 15 | 16 | expect 0 create ${n1} 0644 17 | expect EEXIST link ${n0} ${n1} 18 | expect 0 unlink ${n1} 19 | 20 | expect 0 mkdir ${n1} 0755 21 | expect EEXIST link ${n0} ${n1} 22 | expect 0 rmdir ${n1} 23 | 24 | expect 0 symlink test ${n1} 25 | expect EEXIST link ${n0} ${n1} 26 | expect 0 unlink ${n1} 27 | 28 | expect 0 mkfifo ${n1} 0644 29 | expect EEXIST link ${n0} ${n1} 30 | expect 0 unlink ${n1} 31 | 32 | expect 0 unlink ${n0} 33 | -------------------------------------------------------------------------------- /tests/link/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/11.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EPERM if the source file is a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | n0=`namegen` 10 | n1=`namegen` 11 | n2=`namegen` 12 | 13 | case "${os}:${fs}" in 14 | SunOS:UFS) 15 | echo "1..10" 16 | 17 | expect 0 mkdir ${n0} 0755 18 | expect 0 link ${n0} ${n1} 19 | expect 0 unlink ${n1} 20 | expect 0 rmdir ${n0} 21 | ;; 22 | *) 23 | echo "1..9" 24 | 25 | expect 0 mkdir ${n0} 0755 26 | expect EPERM link ${n0} ${n1} 27 | expect 0 rmdir ${n0} 28 | ;; 29 | esac 30 | 31 | expect 0 mkdir ${n0} 0755 32 | expect 0 chown ${n0} 65534 65534 33 | cdir=`pwd` 34 | cd ${n0} 35 | 36 | expect 0 -u 65534 -g 65534 mkdir ${n1} 0755 37 | expect EPERM -u 65534 -g 65534 link ${n1} ${n2} 38 | expect 0 -u 65534 -g 65534 rmdir ${n1} 39 | 40 | cd ${cdir} 41 | expect 0 rmdir ${n0} 42 | -------------------------------------------------------------------------------- /tests/link/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/12.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EPERM if the source file has its immutable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..32" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 create ${n0} 0644 17 | 18 | expect 0 link ${n0} ${n1} 19 | expect 0 unlink ${n1} 20 | 21 | expect 0 chflags ${n0} SF_IMMUTABLE 22 | expect EPERM link ${n0} ${n1} 23 | expect 0 chflags ${n0} none 24 | expect 0 link ${n0} ${n1} 25 | expect 0 unlink ${n1} 26 | 27 | expect 0 chflags ${n0} UF_IMMUTABLE 28 | expect EPERM link ${n0} ${n1} 29 | expect 0 chflags ${n0} none 30 | expect 0 link ${n0} ${n1} 31 | expect 0 unlink ${n1} 32 | 33 | expect 0 chflags ${n0} SF_APPEND 34 | expect EPERM link ${n0} ${n1} 35 | expect 0 chflags ${n0} none 36 | expect 0 link ${n0} ${n1} 37 | expect 0 unlink ${n1} 38 | 39 | expect 0 chflags ${n0} UF_APPEND 40 | expect EPERM link ${n0} ${n1} 41 | expect 0 chflags ${n0} none 42 | expect 0 link ${n0} ${n1} 43 | expect 0 unlink ${n1} 44 | 45 | expect 0 chflags ${n0} SF_NOUNLINK 46 | expect 0 link ${n0} ${n1} 47 | expect 0 chflags ${n0} none 48 | expect 0 unlink ${n1} 49 | 50 | expect 0 chflags ${n0} UF_NOUNLINK 51 | expect 0 link ${n0} ${n1} 52 | expect 0 chflags ${n0} none 53 | expect 0 unlink ${n1} 54 | 55 | expect 0 unlink ${n0} 56 | -------------------------------------------------------------------------------- /tests/link/13.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/13.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EPERM if the parent directory of the destination file has its immutable flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..32" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | 19 | expect 0 create ${n0}/${n1} 0644 20 | expect 0 link ${n0}/${n1} ${n0}/${n2} 21 | expect 0 unlink ${n0}/${n2} 22 | 23 | expect 0 chflags ${n0} SF_IMMUTABLE 24 | expect EPERM link ${n0}/${n1} ${n0}/${n2} 25 | expect 0 chflags ${n0} none 26 | expect 0 link ${n0}/${n1} ${n0}/${n2} 27 | expect 0 unlink ${n0}/${n2} 28 | 29 | expect 0 chflags ${n0} UF_IMMUTABLE 30 | expect EPERM link ${n0}/${n1} ${n0}/${n2} 31 | expect 0 chflags ${n0} none 32 | expect 0 link ${n0}/${n1} ${n0}/${n2} 33 | expect 0 unlink ${n0}/${n2} 34 | 35 | expect 0 chflags ${n0} SF_APPEND 36 | expect 0 link ${n0}/${n1} ${n0}/${n2} 37 | expect 0 chflags ${n0} none 38 | expect 0 unlink ${n0}/${n2} 39 | 40 | expect 0 chflags ${n0} UF_APPEND 41 | expect 0 link ${n0}/${n1} ${n0}/${n2} 42 | expect 0 chflags ${n0} none 43 | expect 0 unlink ${n0}/${n2} 44 | 45 | expect 0 chflags ${n0} SF_NOUNLINK 46 | expect 0 link ${n0}/${n1} ${n0}/${n2} 47 | expect 0 chflags ${n0} none 48 | expect 0 unlink ${n0}/${n2} 49 | 50 | expect 0 chflags ${n0} UF_NOUNLINK 51 | expect 0 link ${n0}/${n1} ${n0}/${n2} 52 | expect 0 chflags ${n0} none 53 | expect 0 unlink ${n0}/${n2} 54 | 55 | expect 0 unlink ${n0}/${n1} 56 | expect 0 rmdir ${n0} 57 | -------------------------------------------------------------------------------- /tests/link/14.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/14.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EXDEV if the source and the destination files are on different file systems" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..8" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 1m` 19 | newfs /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | expect 0 create ${n0}/${n1} 0644 22 | expect EXDEV link ${n0}/${n1} ${n2} 23 | expect 0 unlink ${n0}/${n1} 24 | expect 0 create ${n1} 0644 25 | expect EXDEV link ${n1} ${n0}/${n2} 26 | expect 0 unlink ${n1} 27 | umount /dev/md${n} 28 | mdconfig -d -u ${n} 29 | expect 0 rmdir ${n0} 30 | ;; 31 | *) 32 | quick_exit 33 | ;; 34 | esac 35 | -------------------------------------------------------------------------------- /tests/link/15.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/15.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns ENOSPC if the directory in which the entry for the new link is being placed cannot be extended because there is no space left on the file system containing the directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..4" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 256k` 19 | newfs /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | expect 0 create ${n0}/${n1} 0644 22 | i=0 23 | while :; do 24 | link ${n0}/${n1} ${n0}/${i} >/dev/null 2>&1 25 | if [ $? -ne 0 ]; then 26 | break 27 | fi 28 | i=`expr $i + 1` 29 | done 30 | expect ENOSPC link ${n0}/${n1} ${n0}/${n2} 31 | umount /dev/md${n} 32 | mdconfig -d -u ${n} 33 | expect 0 rmdir ${n0} 34 | ;; 35 | *) 36 | quick_exit 37 | ;; 38 | esac 39 | -------------------------------------------------------------------------------- /tests/link/16.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/16.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EROFS if the requested link requires writing in a directory on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..9" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 1m` 19 | newfs /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | expect 0 create ${n0}/${n1} 0644 22 | 23 | expect 0 link ${n0}/${n1} ${n0}/${n2} 24 | expect 0 unlink ${n0}/${n2} 25 | mount -ur /dev/md${n} 26 | expect EROFS link ${n0}/${n1} ${n0}/${n2} 27 | mount -uw /dev/md${n} 28 | expect 0 link ${n0}/${n1} ${n0}/${n2} 29 | expect 0 unlink ${n0}/${n2} 30 | 31 | expect 0 unlink ${n0}/${n1} 32 | umount /dev/md${n} 33 | mdconfig -d -u ${n} 34 | expect 0 rmdir ${n0} 35 | ;; 36 | *) 37 | quick_exit 38 | ;; 39 | esac 40 | -------------------------------------------------------------------------------- /tests/link/17.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/link/17.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="link returns EFAULT if one of the pathnames specified is outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..8" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${n0} 0644 14 | expect EFAULT link ${n0} NULL 15 | expect EFAULT link ${n0} DEADCODE 16 | expect 0 unlink ${n0} 17 | expect EFAULT link NULL ${n0} 18 | expect EFAULT link DEADCODE ${n0} 19 | expect EFAULT link NULL DEADCODE 20 | expect EFAULT link DEADCODE NULL 21 | -------------------------------------------------------------------------------- /tests/misc.sh: -------------------------------------------------------------------------------- 1 | # $FreeBSD: src/tools/regression/fstest/tests/misc.sh,v 1.1 2007/01/17 01:42:08 pjd Exp $ 2 | 3 | ntest=1 4 | 5 | name253="_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_12" 6 | name255="${name253}34" 7 | name256="${name255}5" 8 | path1021="${name255}/${name255}/${name255}/${name253}" 9 | path1023="${path1021}/x" 10 | path1024="${path1023}x" 11 | 12 | echo ${dir} | egrep '^/' >/dev/null 2>&1 13 | if [ $? -eq 0 ]; then 14 | maindir="${dir}/../.." 15 | else 16 | maindir="`pwd`/${dir}/../.." 17 | fi 18 | fstest="${maindir}/fstest" 19 | . ${maindir}/tests/conf 20 | 21 | run_getconf() 22 | { 23 | if val=$(getconf "${1}" .); then 24 | if [ "$value" = "undefined" ]; then 25 | echo "${1} is undefined" 26 | exit 1 27 | fi 28 | else 29 | echo "Failed to get ${1}" 30 | exit 1 31 | fi 32 | 33 | echo $val 34 | } 35 | 36 | name_max_val=$(run_getconf NAME_MAX) 37 | path_max_val=$(run_getconf PATH_MAX) 38 | 39 | name_max="_" 40 | i=1 41 | while test $i -lt $name_max_val ; do 42 | name_max="${name_max}x" 43 | i=$(($i+1)) 44 | done 45 | 46 | num_of_dirs=$(( ($path_max_val + $name_max_val) / ($name_max_val + 1) - 1 )) 47 | 48 | long_dir="${name_max}" 49 | i=1 50 | while test $i -lt $num_of_dirs ; do 51 | long_dir="${long_dir}/${name_max}" 52 | i=$(($i+1)) 53 | done 54 | long_dir="${long_dir}/x" 55 | 56 | too_long="${long_dir}/${name_max}" 57 | 58 | create_too_long() 59 | { 60 | mkdir -p ${long_dir} 61 | } 62 | 63 | unlink_too_long() 64 | { 65 | rm -rf ${name_max} 66 | } 67 | 68 | expect() 69 | { 70 | e="${1}" 71 | shift 72 | r=`${fstest} $* 2>/dev/null | tail -1` 73 | echo "${r}" | egrep '^'${e}'$' >/dev/null 2>&1 74 | if [ $? -eq 0 ]; then 75 | echo "ok ${ntest}" 76 | else 77 | echo "not ok ${ntest}" 78 | fi 79 | ntest=`expr $ntest + 1` 80 | } 81 | 82 | jexpect() 83 | { 84 | s="${1}" 85 | d="${2}" 86 | e="${3}" 87 | shift 3 88 | r=`jail -s ${s} / fstest 127.0.0.1 /bin/sh -c "cd ${d} && ${fstest} $* 2>/dev/null" | tail -1` 89 | echo "${r}" | egrep '^'${e}'$' >/dev/null 2>&1 90 | if [ $? -eq 0 ]; then 91 | echo "ok ${ntest}" 92 | else 93 | echo "not ok ${ntest}" 94 | fi 95 | ntest=`expr $ntest + 1` 96 | } 97 | 98 | test_check() 99 | { 100 | if [ $* ]; then 101 | echo "ok ${ntest}" 102 | else 103 | echo "not ok ${ntest}" 104 | fi 105 | ntest=`expr $ntest + 1` 106 | } 107 | 108 | namegen() 109 | { 110 | echo "fstest_`dd if=/dev/urandom bs=1k count=1 2>/dev/null | md5sum | cut -f1 -d' '`" 111 | } 112 | 113 | quick_exit() 114 | { 115 | echo "1..1" 116 | echo "ok 1" 117 | exit 0 118 | } 119 | 120 | supported() 121 | { 122 | case "${1}" in 123 | chflags) 124 | if [ ${os} != "FreeBSD" -o ${fs} != "UFS" ]; then 125 | return 1 126 | fi 127 | ;; 128 | lchmod) 129 | if [ ${os} != "FreeBSD" ]; then 130 | return 1 131 | fi 132 | ;; 133 | esac 134 | return 0 135 | } 136 | 137 | require() 138 | { 139 | if supported ${1}; then 140 | return 141 | fi 142 | quick_exit 143 | } 144 | -------------------------------------------------------------------------------- /tests/mkdir/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/00.t,v 1.2 2007/01/25 20:50:02 pjd Exp $ 3 | 4 | desc="mkdir creates directories" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..36" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n1} 0755 15 | cdir=`pwd` 16 | cd ${n1} 17 | 18 | # POSIX: The file permission bits of the new directory shall be initialized from 19 | # mode. These file permission bits of the mode argument shall be modified by the 20 | # process' file creation mask. 21 | expect 0 mkdir ${n0} 0755 22 | expect dir,0755 lstat ${n0} type,mode 23 | expect 0 rmdir ${n0} 24 | expect 0 mkdir ${n0} 0151 25 | expect dir,0151 lstat ${n0} type,mode 26 | expect 0 rmdir ${n0} 27 | expect 0 -U 077 mkdir ${n0} 0151 28 | expect dir,0100 lstat ${n0} type,mode 29 | expect 0 rmdir ${n0} 30 | expect 0 -U 070 mkdir ${n0} 0345 31 | expect dir,0305 lstat ${n0} type,mode 32 | expect 0 rmdir ${n0} 33 | expect 0 -U 0501 mkdir ${n0} 0345 34 | expect dir,0244 lstat ${n0} type,mode 35 | expect 0 rmdir ${n0} 36 | 37 | # POSIX: The directory's user ID shall be set to the process' effective user ID. 38 | # The directory's group ID shall be set to the group ID of the parent directory 39 | # or to the effective group ID of the process. 40 | expect 0 chown . 65535 65535 41 | expect 0 -u 65535 -g 65535 mkdir ${n0} 0755 42 | expect 65535,65535 lstat ${n0} uid,gid 43 | expect 0 rmdir ${n0} 44 | expect 0 -u 65535 -g 65534 mkdir ${n0} 0755 45 | expect "65535,6553[45]" lstat ${n0} uid,gid 46 | expect 0 rmdir ${n0} 47 | expect 0 chmod . 0777 48 | expect 0 -u 65534 -g 65533 mkdir ${n0} 0755 49 | expect "65534,6553[35]" lstat ${n0} uid,gid 50 | expect 0 rmdir ${n0} 51 | 52 | # POSIX: Upon successful completion, mkdir() shall mark for update the st_atime, 53 | # st_ctime, and st_mtime fields of the directory. Also, the st_ctime and 54 | # st_mtime fields of the directory that contains the new entry shall be marked 55 | # for update. 56 | expect 0 chown . 0 0 57 | time=`${fstest} stat . ctime` 58 | sleep 1 59 | expect 0 mkdir ${n0} 0755 60 | atime=`${fstest} stat ${n0} atime` 61 | test_check $time -lt $atime 62 | mtime=`${fstest} stat ${n0} mtime` 63 | test_check $time -lt $mtime 64 | ctime=`${fstest} stat ${n0} ctime` 65 | test_check $time -lt $ctime 66 | mtime=`${fstest} stat . mtime` 67 | test_check $time -lt $mtime 68 | ctime=`${fstest} stat . ctime` 69 | test_check $time -lt $ctime 70 | expect 0 rmdir ${n0} 71 | 72 | cd ${cdir} 73 | expect 0 rmdir ${n1} 74 | -------------------------------------------------------------------------------- /tests/mkdir/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/01.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR mkdir ${n0}/${n1}/test 0755 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/mkdir/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/02.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 rmdir ${name255} 13 | expect ENAMETOOLONG mkdir ${name256} 0755 14 | -------------------------------------------------------------------------------- /tests/mkdir/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/03.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..11" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 mkdir ${path1023} 0755 16 | expect 0 rmdir ${path1023} 17 | create_too_long 18 | expect ENAMETOOLONG mkdir ${too_long} 0755 19 | unlink_too_long 20 | expect 0 rmdir ${path1021} 21 | expect 0 rmdir ${name255}/${name255}/${name255} 22 | expect 0 rmdir ${name255}/${name255} 23 | expect 0 rmdir ${name255} 24 | -------------------------------------------------------------------------------- /tests/mkdir/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/04.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns ENOENT if a component of the path prefix does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect ENOENT mkdir ${n0}/${n1}/test 0755 16 | expect 0 rmdir ${n0} 17 | -------------------------------------------------------------------------------- /tests/mkdir/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/05.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 21 | expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} 22 | expect 0 chmod ${n1} 0644 23 | expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 24 | expect 0 chmod ${n1} 0755 25 | expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 26 | expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} 27 | expect 0 rmdir ${n1} 28 | cd ${cdir} 29 | expect 0 rmdir ${n0} 30 | -------------------------------------------------------------------------------- /tests/mkdir/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/06.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns EACCES when write permission is denied on the parent directory of the directory to be created" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 21 | expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} 22 | expect 0 chmod ${n1} 0555 23 | expect EACCES -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 24 | expect 0 chmod ${n1} 0755 25 | expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 26 | expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} 27 | expect 0 rmdir ${n1} 28 | cd ${cdir} 29 | expect 0 rmdir ${n0} 30 | -------------------------------------------------------------------------------- /tests/mkdir/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/07.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP mkdir ${n0}/test 0755 17 | expect ELOOP mkdir ${n1}/test 0755 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/mkdir/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/08.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns EPERM if the parent directory of the directory to be created has its immutable flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | 18 | expect 0 mkdir ${n0}/${n1} 0755 19 | expect 0 rmdir ${n0}/${n1} 20 | 21 | expect 0 chflags ${n0} SF_IMMUTABLE 22 | expect EPERM mkdir ${n0}/${n1} 0755 23 | expect 0 chflags ${n0} none 24 | expect 0 mkdir ${n0}/${n1} 0755 25 | expect 0 rmdir ${n0}/${n1} 26 | 27 | expect 0 chflags ${n0} UF_IMMUTABLE 28 | expect EPERM mkdir ${n0}/${n1} 0755 29 | expect 0 chflags ${n0} none 30 | expect 0 mkdir ${n0}/${n1} 0755 31 | expect 0 rmdir ${n0}/${n1} 32 | 33 | expect 0 chflags ${n0} SF_APPEND 34 | expect 0 mkdir ${n0}/${n1} 0755 35 | expect 0 chflags ${n0} none 36 | expect 0 rmdir ${n0}/${n1} 37 | 38 | expect 0 chflags ${n0} UF_APPEND 39 | expect 0 mkdir ${n0}/${n1} 0755 40 | expect 0 chflags ${n0} none 41 | expect 0 rmdir ${n0}/${n1} 42 | 43 | expect 0 chflags ${n0} SF_NOUNLINK 44 | expect 0 mkdir ${n0}/${n1} 0755 45 | expect 0 rmdir ${n0}/${n1} 46 | expect 0 chflags ${n0} none 47 | 48 | expect 0 chflags ${n0} UF_NOUNLINK 49 | expect 0 mkdir ${n0}/${n1} 0755 50 | expect 0 rmdir ${n0}/${n1} 51 | expect 0 chflags ${n0} none 52 | 53 | expect 0 rmdir ${n0} 54 | -------------------------------------------------------------------------------- /tests/mkdir/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/09.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..7" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 mkdir ${n0}/${n1} 0755 21 | expect 0 rmdir ${n0}/${n1} 22 | mount -ur /dev/md${n} 23 | expect EROFS mkdir ${n0}/${n1} 0755 24 | mount -uw /dev/md${n} 25 | expect 0 mkdir ${n0}/${n1} 0755 26 | expect 0 rmdir ${n0}/${n1} 27 | umount /dev/md${n} 28 | mdconfig -d -u ${n} 29 | expect 0 rmdir ${n0} 30 | ;; 31 | *) 32 | quick_exit 33 | ;; 34 | esac 35 | -------------------------------------------------------------------------------- /tests/mkdir/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/10.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns EEXIST if the named file exists" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 mkdir ${n0} 0755 14 | expect EEXIST mkdir ${n0} 0755 15 | expect 0 rmdir ${n0} 16 | 17 | expect 0 create ${n0} 0644 18 | expect EEXIST mkdir ${n0} 0755 19 | expect 0 unlink ${n0} 20 | 21 | expect 0 symlink test ${n0} 22 | expect EEXIST mkdir ${n0} 0755 23 | expect 0 unlink ${n0} 24 | 25 | expect 0 mkfifo ${n0} 0644 26 | expect EEXIST mkdir ${n0} 0755 27 | expect 0 unlink ${n0} 28 | -------------------------------------------------------------------------------- /tests/mkdir/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/11.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns ENOSPC if there are no free inodes on the file system on which the directory is being created" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..3" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 256k` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | i=0 21 | while :; do 22 | mkdir ${n0}/${i} >/dev/null 2>&1 23 | if [ $? -ne 0 ]; then 24 | break 25 | fi 26 | i=`expr $i + 1` 27 | done 28 | expect ENOSPC mkdir ${n0}/${n1} 0755 29 | umount /dev/md${n} 30 | mdconfig -d -u ${n} 31 | expect 0 rmdir ${n0} 32 | ;; 33 | *) 34 | quick_exit 35 | ;; 36 | esac 37 | -------------------------------------------------------------------------------- /tests/mkdir/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkdir/12.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkdir returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT mkdir NULL 0755 12 | expect EFAULT mkdir DEADCODE 0755 13 | -------------------------------------------------------------------------------- /tests/mkfifo/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/00.t,v 1.2 2007/01/25 20:50:02 pjd Exp $ 3 | 4 | desc="mkfifo creates fifo files" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..36" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n1} 0755 15 | cdir=`pwd` 16 | cd ${n1} 17 | 18 | # POSIX: The file permission bits of the new FIFO shall be initialized from 19 | # mode. The file permission bits of the mode argument shall be modified by the 20 | # process' file creation mask. 21 | expect 0 mkfifo ${n0} 0755 22 | expect fifo,0755 lstat ${n0} type,mode 23 | expect 0 unlink ${n0} 24 | expect 0 mkfifo ${n0} 0151 25 | expect fifo,0151 lstat ${n0} type,mode 26 | expect 0 unlink ${n0} 27 | expect 0 -U 077 mkfifo ${n0} 0151 28 | expect fifo,0100 lstat ${n0} type,mode 29 | expect 0 unlink ${n0} 30 | expect 0 -U 070 mkfifo ${n0} 0345 31 | expect fifo,0305 lstat ${n0} type,mode 32 | expect 0 unlink ${n0} 33 | expect 0 -U 0501 mkfifo ${n0} 0345 34 | expect fifo,0244 lstat ${n0} type,mode 35 | expect 0 unlink ${n0} 36 | 37 | # POSIX: The FIFO's user ID shall be set to the process' effective user ID. 38 | # The FIFO's group ID shall be set to the group ID of the parent directory or to 39 | # the effective group ID of the process. 40 | expect 0 chown . 65535 65535 41 | expect 0 -u 65535 -g 65535 mkfifo ${n0} 0755 42 | expect 65535,65535 lstat ${n0} uid,gid 43 | expect 0 unlink ${n0} 44 | expect 0 -u 65535 -g 65534 mkfifo ${n0} 0755 45 | expect "65535,6553[45]" lstat ${n0} uid,gid 46 | expect 0 unlink ${n0} 47 | expect 0 chmod . 0777 48 | expect 0 -u 65534 -g 65533 mkfifo ${n0} 0755 49 | expect "65534,6553[35]" lstat ${n0} uid,gid 50 | expect 0 unlink ${n0} 51 | 52 | # POSIX: Upon successful completion, mkfifo() shall mark for update the 53 | # st_atime, st_ctime, and st_mtime fields of the file. Also, the st_ctime and 54 | # st_mtime fields of the directory that contains the new entry shall be marked 55 | # for update. 56 | expect 0 chown . 0 0 57 | time=`${fstest} stat . ctime` 58 | sleep 1 59 | expect 0 mkfifo ${n0} 0755 60 | atime=`${fstest} stat ${n0} atime` 61 | test_check $time -lt $atime 62 | mtime=`${fstest} stat ${n0} mtime` 63 | test_check $time -lt $mtime 64 | ctime=`${fstest} stat ${n0} ctime` 65 | test_check $time -lt $ctime 66 | mtime=`${fstest} stat . mtime` 67 | test_check $time -lt $mtime 68 | ctime=`${fstest} stat . ctime` 69 | test_check $time -lt $ctime 70 | expect 0 unlink ${n0} 71 | 72 | cd ${cdir} 73 | expect 0 rmdir ${n1} 74 | -------------------------------------------------------------------------------- /tests/mkfifo/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/01.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR mkfifo ${n0}/${n1}/test 0644 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/mkfifo/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/02.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | expect 0 mkfifo ${name255} 0644 12 | expect 0 unlink ${name255} 13 | expect ENAMETOOLONG mkfifo ${name256} 0644 14 | -------------------------------------------------------------------------------- /tests/mkfifo/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/03.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..11" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 mkfifo ${path1023} 0644 16 | expect 0 unlink ${path1023} 17 | create_too_long 18 | expect ENAMETOOLONG mkfifo ${too_long} 0644 19 | unlink_too_long 20 | expect 0 rmdir ${path1021} 21 | expect 0 rmdir ${name255}/${name255}/${name255} 22 | expect 0 rmdir ${name255}/${name255} 23 | expect 0 rmdir ${name255} 24 | -------------------------------------------------------------------------------- /tests/mkfifo/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/04.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns ENOENT if a component of the path prefix does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect ENOENT mkfifo ${n0}/${n1}/test 0644 16 | expect 0 rmdir ${n0} 17 | -------------------------------------------------------------------------------- /tests/mkfifo/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/05.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 21 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 22 | expect 0 chmod ${n1} 0644 23 | expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 24 | expect 0 chmod ${n1} 0755 25 | expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 26 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 27 | expect 0 rmdir ${n1} 28 | cd ${cdir} 29 | expect 0 rmdir ${n0} 30 | -------------------------------------------------------------------------------- /tests/mkfifo/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/06.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns EACCES when write permission is denied on the parent directory of the file to be created" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 21 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 22 | expect 0 chmod ${n1} 0555 23 | expect EACCES -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 24 | expect 0 chmod ${n1} 0755 25 | expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n2} 0644 26 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 27 | expect 0 rmdir ${n1} 28 | cd ${cdir} 29 | expect 0 rmdir ${n0} 30 | -------------------------------------------------------------------------------- /tests/mkfifo/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/07.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP mkfifo ${n0}/test 0644 17 | expect ELOOP mkfifo ${n1}/test 0644 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/mkfifo/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/08.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..7" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 mkfifo ${n0}/${n1} 0644 21 | expect 0 unlink ${n0}/${n1} 22 | mount -ur /dev/md${n} 23 | expect EROFS mkfifo ${n0}/${n1} 0644 24 | mount -uw /dev/md${n} 25 | expect 0 mkfifo ${n0}/${n1} 0644 26 | expect 0 unlink ${n0}/${n1} 27 | umount /dev/md${n} 28 | mdconfig -d -u ${n} 29 | expect 0 rmdir ${n0} 30 | ;; 31 | *) 32 | quick_exit 33 | ;; 34 | esac 35 | -------------------------------------------------------------------------------- /tests/mkfifo/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/09.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns EEXIST if the named file exists" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 mkdir ${n0} 0755 14 | expect EEXIST mkfifo ${n0} 0644 15 | expect 0 rmdir ${n0} 16 | 17 | expect 0 create ${n0} 0644 18 | expect EEXIST mkfifo ${n0} 0644 19 | expect 0 unlink ${n0} 20 | 21 | expect 0 symlink test ${n0} 22 | expect EEXIST mkfifo ${n0} 0644 23 | expect 0 unlink ${n0} 24 | 25 | expect 0 mkfifo ${n0} 0644 26 | expect EEXIST mkfifo ${n0} 0644 27 | expect 0 unlink ${n0} 28 | -------------------------------------------------------------------------------- /tests/mkfifo/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/10.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns EPERM if the parent directory of the file to be created has its immutable flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | 18 | expect 0 mkfifo ${n0}/${n1} 0644 19 | expect 0 unlink ${n0}/${n1} 20 | 21 | expect 0 chflags ${n0} SF_IMMUTABLE 22 | expect EPERM mkfifo ${n0}/${n1} 0644 23 | expect 0 chflags ${n0} none 24 | expect 0 mkfifo ${n0}/${n1} 0644 25 | expect 0 unlink ${n0}/${n1} 26 | 27 | expect 0 chflags ${n0} UF_IMMUTABLE 28 | expect EPERM mkfifo ${n0}/${n1} 0644 29 | expect 0 chflags ${n0} none 30 | expect 0 mkfifo ${n0}/${n1} 0644 31 | expect 0 unlink ${n0}/${n1} 32 | 33 | expect 0 chflags ${n0} SF_APPEND 34 | expect 0 mkfifo ${n0}/${n1} 0644 35 | expect 0 chflags ${n0} none 36 | expect 0 unlink ${n0}/${n1} 37 | 38 | expect 0 chflags ${n0} UF_APPEND 39 | expect 0 mkfifo ${n0}/${n1} 0644 40 | expect 0 chflags ${n0} none 41 | expect 0 unlink ${n0}/${n1} 42 | 43 | expect 0 chflags ${n0} SF_NOUNLINK 44 | expect 0 mkfifo ${n0}/${n1} 0644 45 | expect 0 unlink ${n0}/${n1} 46 | expect 0 chflags ${n0} none 47 | 48 | expect 0 chflags ${n0} UF_NOUNLINK 49 | expect 0 mkfifo ${n0}/${n1} 0644 50 | expect 0 unlink ${n0}/${n1} 51 | expect 0 chflags ${n0} none 52 | 53 | expect 0 rmdir ${n0} 54 | -------------------------------------------------------------------------------- /tests/mkfifo/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/11.t,v 1.1 2007/01/17 01:42:09 pjd Exp $ 3 | 4 | desc="mkfifo returns ENOSPC if there are no free inodes on the file system on which the file is being created" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..3" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 256k` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | i=0 21 | while :; do 22 | mkfifo ${n0}/${i} >/dev/null 2>&1 23 | if [ $? -ne 0 ]; then 24 | break 25 | fi 26 | i=`expr $i + 1` 27 | done 28 | expect ENOSPC mkfifo ${n0}/${n1} 0644 29 | umount /dev/md${n} 30 | mdconfig -d -u ${n} 31 | expect 0 rmdir ${n0} 32 | ;; 33 | *) 34 | quick_exit 35 | ;; 36 | esac 37 | -------------------------------------------------------------------------------- /tests/mkfifo/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/mkfifo/12.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="mkfifo returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT mkfifo NULL 0644 12 | expect EFAULT mkfifo DEADCODE 0644 13 | -------------------------------------------------------------------------------- /tests/open/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/00.t,v 1.2 2007/01/25 20:50:02 pjd Exp $ 3 | 4 | desc="open opens (and eventually creates) a file" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..47" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n1} 0755 15 | cdir=`pwd` 16 | cd ${n1} 17 | 18 | # POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the access 19 | # permission bits of the file mode shall be set to the value of the third 20 | # argument taken as type mode_t modified as follows: a bitwise AND is performed 21 | # on the file-mode bits and the corresponding bits in the complement of the 22 | # process' file mode creation mask. Thus, all bits in the file mode whose 23 | # corresponding bit in the file mode creation mask is set are cleared. 24 | expect 0 open ${n0} O_CREAT,O_WRONLY 0755 25 | expect regular,0755 lstat ${n0} type,mode 26 | expect 0 unlink ${n0} 27 | expect 0 open ${n0} O_CREAT,O_WRONLY 0151 28 | expect regular,0151 lstat ${n0} type,mode 29 | expect 0 unlink ${n0} 30 | expect 0 -U 077 open ${n0} O_CREAT,O_WRONLY 0151 31 | expect regular,0100 lstat ${n0} type,mode 32 | expect 0 unlink ${n0} 33 | expect 0 -U 070 open ${n0} O_CREAT,O_WRONLY 0345 34 | expect regular,0305 lstat ${n0} type,mode 35 | expect 0 unlink ${n0} 36 | expect 0 -U 0501 open ${n0} O_CREAT,O_WRONLY 0345 37 | expect regular,0244 lstat ${n0} type,mode 38 | expect 0 unlink ${n0} 39 | 40 | # POSIX: (If O_CREAT is specified and the file doesn't exist) [...] the user ID 41 | # of the file shall be set to the effective user ID of the process; the group ID 42 | # of the file shall be set to the group ID of the file's parent directory or to 43 | # the effective group ID of the process [...] 44 | expect 0 chown . 65535 65535 45 | expect 0 -u 65535 -g 65535 open ${n0} O_CREAT,O_WRONLY 0644 46 | expect 65535,65535 lstat ${n0} uid,gid 47 | expect 0 unlink ${n0} 48 | expect 0 -u 65535 -g 65534 open ${n0} O_CREAT,O_WRONLY 0644 49 | expect "65535,6553[45]" lstat ${n0} uid,gid 50 | expect 0 unlink ${n0} 51 | expect 0 chmod . 0777 52 | expect 0 -u 65534 -g 65533 open ${n0} O_CREAT,O_WRONLY 0644 53 | expect "65534,6553[35]" lstat ${n0} uid,gid 54 | expect 0 unlink ${n0} 55 | 56 | # Update parent directory ctime/mtime if file didn't exist. 57 | expect 0 chown . 0 0 58 | time=`${fstest} stat . ctime` 59 | sleep 1 60 | expect 0 open ${n0} O_CREAT,O_WRONLY 0644 61 | atime=`${fstest} stat ${n0} atime` 62 | test_check $time -lt $atime 63 | mtime=`${fstest} stat ${n0} mtime` 64 | test_check $time -lt $mtime 65 | ctime=`${fstest} stat ${n0} ctime` 66 | test_check $time -lt $ctime 67 | mtime=`${fstest} stat . mtime` 68 | test_check $time -lt $mtime 69 | ctime=`${fstest} stat . ctime` 70 | test_check $time -lt $ctime 71 | expect 0 unlink ${n0} 72 | 73 | # Don't update parent directory ctime/mtime if file existed. 74 | expect 0 create ${n0} 0644 75 | dmtime=`${fstest} stat . mtime` 76 | dctime=`${fstest} stat . ctime` 77 | sleep 1 78 | expect 0 open ${n0} O_CREAT,O_RDONLY 0644 79 | mtime=`${fstest} stat . mtime` 80 | test_check $dmtime -eq $mtime 81 | ctime=`${fstest} stat . ctime` 82 | test_check $dctime -eq $ctime 83 | expect 0 unlink ${n0} 84 | 85 | echo test > ${n0} 86 | expect 5 stat ${n0} size 87 | mtime1=`${fstest} stat ${n0} mtime` 88 | ctime1=`${fstest} stat ${n0} ctime` 89 | sleep 1 90 | expect 0 open ${n0} O_WRONLY,O_TRUNC 91 | mtime2=`${fstest} stat ${n0} mtime` 92 | test_check $mtime1 -lt $mtime2 93 | ctime2=`${fstest} stat ${n0} ctime` 94 | test_check $ctime1 -lt $ctime2 95 | expect 0 stat ${n0} size 96 | expect 0 unlink ${n0} 97 | 98 | cd ${cdir} 99 | expect 0 rmdir ${n1} 100 | -------------------------------------------------------------------------------- /tests/open/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/01.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR open ${n0}/${n1}/test O_CREAT 0644 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/open/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/02.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | expect 0 open ${name255} O_CREAT 0620 12 | expect 0620 stat ${name255} mode 13 | expect 0 unlink ${name255} 14 | expect ENAMETOOLONG open ${name256} O_CREAT 0620 15 | -------------------------------------------------------------------------------- /tests/open/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/03.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 open ${path1023} O_CREAT 0642 16 | expect 0642 stat ${path1023} mode 17 | expect 0 unlink ${path1023} 18 | create_too_long 19 | expect ENAMETOOLONG open ${too_long} O_CREAT 0642 20 | unlink_too_long 21 | expect 0 rmdir ${path1021} 22 | expect 0 rmdir ${name255}/${name255}/${name255} 23 | expect 0 rmdir ${name255}/${name255} 24 | expect 0 rmdir ${name255} 25 | -------------------------------------------------------------------------------- /tests/open/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/04.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ENOENT if a component of the path name that must exist does not exist or O_CREAT is not set and the named file does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect ENOENT open ${n0}/${n1}/test O_CREAT 0644 16 | expect ENOENT open ${n0}/${n1} O_RDONLY 17 | expect 0 rmdir ${n0} 18 | -------------------------------------------------------------------------------- /tests/open/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/05.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY 22 | expect 0 chmod ${n1} 0644 23 | expect EACCES -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY 24 | expect 0 chmod ${n1} 0755 25 | expect 0 -u 65534 -g 65534 open ${n1}/${n2} O_RDONLY 26 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 27 | expect 0 rmdir ${n1} 28 | cd ${cdir} 29 | expect 0 rmdir ${n0} 30 | -------------------------------------------------------------------------------- /tests/open/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/06.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EACCES when the required permissions (for reading and/or writing) are denied for the given flags" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..72" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 chown ${n0} 65534 65534 16 | cdir=`pwd` 17 | cd ${n0} 18 | 19 | expect 0 -u 65534 -g 65534 create ${n1} 0644 20 | 21 | expect 0 -u 65534 -g 65534 chmod ${n1} 0600 22 | expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY 23 | expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY 24 | expect 0 -u 65534 -g 65534 open ${n1} O_RDWR 25 | expect 0 -u 65534 -g 65534 chmod ${n1} 0060 26 | expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY 27 | expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY 28 | expect 0 -u 65533 -g 65534 open ${n1} O_RDWR 29 | expect 0 -u 65534 -g 65534 chmod ${n1} 0006 30 | expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY 31 | expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY 32 | expect 0 -u 65533 -g 65533 open ${n1} O_RDWR 33 | 34 | expect 0 -u 65534 -g 65534 chmod ${n1} 0477 35 | expect 0 -u 65534 -g 65534 open ${n1} O_RDONLY 36 | expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY 37 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR 38 | expect 0 -u 65534 -g 65534 chmod ${n1} 0747 39 | expect 0 -u 65533 -g 65534 open ${n1} O_RDONLY 40 | expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY 41 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR 42 | expect 0 -u 65534 -g 65534 chmod ${n1} 0774 43 | expect 0 -u 65533 -g 65533 open ${n1} O_RDONLY 44 | expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY 45 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR 46 | 47 | expect 0 -u 65534 -g 65534 chmod ${n1} 0277 48 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY 49 | expect 0 -u 65534 -g 65534 open ${n1} O_WRONLY 50 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR 51 | expect 0 -u 65534 -g 65534 chmod ${n1} 0727 52 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY 53 | expect 0 -u 65533 -g 65534 open ${n1} O_WRONLY 54 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR 55 | expect 0 -u 65534 -g 65534 chmod ${n1} 0772 56 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY 57 | expect 0 -u 65533 -g 65533 open ${n1} O_WRONLY 58 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR 59 | 60 | expect 0 -u 65534 -g 65534 chmod ${n1} 0177 61 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY 62 | expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY 63 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR 64 | expect 0 -u 65534 -g 65534 chmod ${n1} 0717 65 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY 66 | expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY 67 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR 68 | expect 0 -u 65534 -g 65534 chmod ${n1} 0771 69 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY 70 | expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY 71 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR 72 | 73 | expect 0 -u 65534 -g 65534 chmod ${n1} 0077 74 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY 75 | expect EACCES -u 65534 -g 65534 open ${n1} O_WRONLY 76 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDWR 77 | expect 0 -u 65534 -g 65534 chmod ${n1} 0707 78 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY 79 | expect EACCES -u 65533 -g 65534 open ${n1} O_WRONLY 80 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDWR 81 | expect 0 -u 65534 -g 65534 chmod ${n1} 0770 82 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY 83 | expect EACCES -u 65533 -g 65533 open ${n1} O_WRONLY 84 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDWR 85 | # 86 | # EACCES for opening a directory read-only with no read access 87 | # EACCES for reading a directory with no execute access 88 | # 89 | cd .. 90 | expect 0 -u 65534 -g 65534 open ${n0} O_RDONLY 91 | expect 0 -u 65534 -g 65534 chmod ${n0} 0355 92 | expect EACCES -u 65534 -g 65534 open ${n0} O_RDONLY 93 | expect 0770 -u 65534 -g 65534 stat ${n0}/${n1} mode 94 | expect 0 -u 65534 -g 65534 chmod ${n0} 0655 95 | expect EACCES -u 65534 -g 65534 stat ${n0}/${n1} mode 96 | 97 | expect 0 -u 65534 -g 65534 chmod ${n0} 0755 98 | cd ${n0} 99 | expect 0 -u 65534 -g 65534 unlink ${n1} 100 | 101 | cd ${cdir} 102 | expect 0 rmdir ${n0} 103 | -------------------------------------------------------------------------------- /tests/open/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/07.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EACCES when O_TRUNC is specified and write permission is denied" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..23" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 chown ${n0} 65534 65534 16 | cdir=`pwd` 17 | cd ${n0} 18 | 19 | expect 0 -u 65534 -g 65534 create ${n1} 0644 20 | 21 | expect 0 -u 65534 -g 65534 chmod ${n1} 0477 22 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC 23 | expect 0 -u 65534 -g 65534 chmod ${n1} 0747 24 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC 25 | expect 0 -u 65534 -g 65534 chmod ${n1} 0774 26 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC 27 | 28 | expect 0 -u 65534 -g 65534 chmod ${n1} 0177 29 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC 30 | expect 0 -u 65534 -g 65534 chmod ${n1} 0717 31 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC 32 | expect 0 -u 65534 -g 65534 chmod ${n1} 0771 33 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC 34 | 35 | expect 0 -u 65534 -g 65534 chmod ${n1} 0077 36 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_TRUNC 37 | expect 0 -u 65534 -g 65534 chmod ${n1} 0707 38 | expect EACCES -u 65533 -g 65534 open ${n1} O_RDONLY,O_TRUNC 39 | expect 0 -u 65534 -g 65534 chmod ${n1} 0770 40 | expect EACCES -u 65533 -g 65533 open ${n1} O_RDONLY,O_TRUNC 41 | 42 | expect 0 -u 65534 -g 65534 unlink ${n1} 43 | 44 | cd ${cdir} 45 | expect 0 rmdir ${n0} 46 | -------------------------------------------------------------------------------- /tests/open/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/08.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EACCES when O_CREAT is specified, the file does not exist, and the directory in which it is to be created does not permit writing" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | cdir=`pwd` 16 | cd ${n0} 17 | expect EACCES -u 65534 -g 65534 open ${n1} O_RDONLY,O_CREAT 0644 18 | cd ${cdir} 19 | expect 0 rmdir ${n0} 20 | -------------------------------------------------------------------------------- /tests/open/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/09.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="O_CREAT is specified, the file does not exist, and the directory in which it is to be created has its immutable flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | 18 | expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 19 | expect 0 unlink ${n0}/${n1} 20 | 21 | expect 0 chflags ${n0} SF_IMMUTABLE 22 | expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644 23 | expect 0 chflags ${n0} none 24 | expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 25 | expect 0 unlink ${n0}/${n1} 26 | 27 | expect 0 chflags ${n0} UF_IMMUTABLE 28 | expect EPERM open ${n0}/${n1} O_RDONLY,O_CREAT 0644 29 | expect 0 chflags ${n0} none 30 | expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 31 | expect 0 unlink ${n0}/${n1} 32 | 33 | expect 0 chflags ${n0} SF_APPEND 34 | expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 35 | expect 0 chflags ${n0} none 36 | expect 0 unlink ${n0}/${n1} 37 | 38 | expect 0 chflags ${n0} UF_APPEND 39 | expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 40 | expect 0 chflags ${n0} none 41 | expect 0 unlink ${n0}/${n1} 42 | 43 | expect 0 chflags ${n0} SF_NOUNLINK 44 | expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 45 | expect 0 chflags ${n0} none 46 | expect 0 unlink ${n0}/${n1} 47 | 48 | expect 0 chflags ${n0} UF_NOUNLINK 49 | expect 0 symlink test ${n0}/${n1} 50 | expect 0 chflags ${n0} none 51 | expect 0 unlink ${n0}/${n1} 52 | 53 | expect 0 rmdir ${n0} 54 | -------------------------------------------------------------------------------- /tests/open/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/10.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EPERM when the named file has its immutable flag set and the file is to be modified" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..28" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 create ${n0} 0644 16 | expect 0 chflags ${n0} SF_IMMUTABLE 17 | expect EPERM open ${n0} O_WRONLY 18 | expect EPERM open ${n0} O_RDWR 19 | expect EPERM open ${n0} O_RDONLY,O_TRUNC 20 | expect 0 chflags ${n0} none 21 | expect 0 unlink ${n0} 22 | 23 | expect 0 create ${n0} 0644 24 | expect 0 chflags ${n0} UF_IMMUTABLE 25 | expect EPERM open ${n0} O_WRONLY 26 | expect EPERM open ${n0} O_RDWR 27 | expect EPERM open ${n0} O_RDONLY,O_TRUNC 28 | expect 0 chflags ${n0} none 29 | expect 0 unlink ${n0} 30 | 31 | expect 0 create ${n0} 0644 32 | expect 0 chflags ${n0} SF_NOUNLINK 33 | expect 0 open ${n0} O_WRONLY 34 | expect 0 open ${n0} O_RDWR 35 | expect 0 open ${n0} O_RDONLY,O_TRUNC 36 | expect 0 chflags ${n0} none 37 | expect 0 unlink ${n0} 38 | 39 | expect 0 create ${n0} 0644 40 | expect 0 chflags ${n0} UF_NOUNLINK 41 | expect 0 open ${n0} O_WRONLY 42 | expect 0 open ${n0} O_RDWR 43 | expect 0 open ${n0} O_RDONLY,O_TRUNC 44 | expect 0 chflags ${n0} none 45 | expect 0 unlink ${n0} 46 | -------------------------------------------------------------------------------- /tests/open/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/11.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EPERM when the named file has its append-only flag set, the file is to be modified, and O_TRUNC is specified or O_APPEND is not specified" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..24" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 create ${n0} 0644 16 | expect 0 chflags ${n0} SF_APPEND 17 | expect 0 open ${n0} O_WRONLY,O_APPEND 18 | expect 0 open ${n0} O_RDWR,O_APPEND 19 | expect EPERM open ${n0} O_WRONLY 20 | expect EPERM open ${n0} O_RDWR 21 | expect EPERM open ${n0} O_RDONLY,O_TRUNC 22 | expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC 23 | expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC 24 | expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC 25 | expect 0 chflags ${n0} none 26 | expect 0 unlink ${n0} 27 | 28 | expect 0 create ${n0} 0644 29 | expect 0 chflags ${n0} UF_APPEND 30 | expect 0 open ${n0} O_WRONLY,O_APPEND 31 | expect 0 open ${n0} O_RDWR,O_APPEND 32 | expect EPERM open ${n0} O_WRONLY 33 | expect EPERM open ${n0} O_RDWR 34 | expect EPERM open ${n0} O_RDONLY,O_TRUNC 35 | expect EPERM open ${n0} O_RDONLY,O_APPEND,O_TRUNC 36 | expect EPERM open ${n0} O_WRONLY,O_APPEND,O_TRUNC 37 | expect EPERM open ${n0} O_RDWR,O_APPEND,O_TRUNC 38 | expect 0 chflags ${n0} none 39 | expect 0 unlink ${n0} 40 | -------------------------------------------------------------------------------- /tests/open/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/12.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP open ${n0}/test O_RDONLY 17 | expect ELOOP open ${n1}/test O_RDONLY 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/open/13.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/13.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EISDIR when he named file is a directory, and the arguments specify it is to be modified" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..8" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | 17 | expect 0 open ${n0} O_RDONLY 18 | expect EISDIR open ${n0} O_WRONLY 19 | expect EISDIR open ${n0} O_RDWR 20 | expect EISDIR open ${n0} O_RDONLY,O_TRUNC 21 | expect EISDIR open ${n0} O_WRONLY,O_TRUNC 22 | expect EISDIR open ${n0} O_RDWR,O_TRUNC 23 | 24 | expect 0 rmdir ${n0} 25 | -------------------------------------------------------------------------------- /tests/open/14.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/14.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EROFS if the named file resides on a read-only file system, and the file is to be modified" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..10" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 create ${n0}/${n1} 0644 21 | expect 0 open ${n0}/${n1} O_WRONLY 22 | expect 0 open ${n0}/${n1} O_RDWR 23 | expect 0 open ${n0}/${n1} O_RDONLY,O_TRUNC 24 | mount -ur /dev/md${n} 25 | expect EROFS open ${n0}/${n1} O_WRONLY 26 | expect EROFS open ${n0}/${n1} O_RDWR 27 | expect EROFS open ${n0}/${n1} O_RDONLY,O_TRUNC 28 | mount -uw /dev/md${n} 29 | expect 0 unlink ${n0}/${n1} 30 | umount /dev/md${n} 31 | mdconfig -d -u ${n} 32 | expect 0 rmdir ${n0} 33 | ;; 34 | *) 35 | quick_exit 36 | ;; 37 | esac 38 | -------------------------------------------------------------------------------- /tests/open/15.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/15.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EROFS when O_CREAT is specified and the named file would reside on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..5" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 open ${n0}/${n1} O_RDONLY,O_CREAT 0644 21 | expect 0 unlink ${n0}/${n1} 22 | mount -ur /dev/md${n} 23 | expect EROFS open ${n0}/${n1} O_RDONLY,O_CREAT 0644 24 | mount -uw /dev/md${n} 25 | umount /dev/md${n} 26 | mdconfig -d -u ${n} 27 | expect 0 rmdir ${n0} 28 | ;; 29 | *) 30 | quick_exit 31 | ;; 32 | esac 33 | -------------------------------------------------------------------------------- /tests/open/16.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/16.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EMLINK/ELOOP when O_NOFOLLOW was specified and the target is a symbolic link" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | case "${os}" in 16 | FreeBSD) 17 | expect EMLINK open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644 18 | expect EMLINK open ${n1} O_RDONLY,O_NOFOLLOW 19 | expect EMLINK open ${n1} O_WRONLY,O_NOFOLLOW 20 | expect EMLINK open ${n1} O_RDWR,O_NOFOLLOW 21 | ;; 22 | *) 23 | expect ELOOP open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644 24 | expect ELOOP open ${n1} O_RDONLY,O_NOFOLLOW 25 | expect ELOOP open ${n1} O_WRONLY,O_NOFOLLOW 26 | expect ELOOP open ${n1} O_RDWR,O_NOFOLLOW 27 | ;; 28 | esac 29 | expect 0 unlink ${n1} 30 | -------------------------------------------------------------------------------- /tests/open/17.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/17.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ENXIO when O_NONBLOCK is set, the named file is a fifo, O_WRONLY is set, and no process has the file open for reading" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 mkfifo ${n0} 0644 14 | expect ENXIO open ${n0} O_WRONLY,O_NONBLOCK 15 | expect 0 unlink ${n0} 16 | -------------------------------------------------------------------------------- /tests/open/18.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/18.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EWOULDBLOCK when O_NONBLOCK and one of O_SHLOCK or O_EXLOCK is specified and the file is locked" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..6" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 create ${n0} 0644 16 | expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK 17 | expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK 18 | expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK 19 | expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK 20 | expect 0 unlink ${n0} 21 | ;; 22 | *) 23 | quick_exit 24 | ;; 25 | esac 26 | -------------------------------------------------------------------------------- /tests/open/19.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/19.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ENOSPC when O_CREAT is specified, the file does not exist, and there are no free inodes on the file system on which the file is being created" 5 | 6 | 7 | dir=`dirname $0` 8 | . ${dir}/../misc.sh 9 | 10 | case "${os}:${fs}" in 11 | FreeBSD:UFS) 12 | echo "1..3" 13 | 14 | n0=`namegen` 15 | n1=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 256k` 19 | newfs /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | i=0 22 | while :; do 23 | touch ${n0}/${i} >/dev/null 2>&1 24 | if [ $? -ne 0 ]; then 25 | break 26 | fi 27 | i=`expr $i + 1` 28 | done 29 | expect ENOSPC open ${n0}/${i} O_RDONLY,O_CREAT 0644 30 | umount /dev/md${n} 31 | mdconfig -d -u ${n} 32 | expect 0 rmdir ${n0} 33 | ;; 34 | *) 35 | quick_exit 36 | ;; 37 | esac 38 | -------------------------------------------------------------------------------- /tests/open/20.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/20.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns ETXTBSY when the file is a pure procedure (shared text) file that is being executed and the open() system call requests write access" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..4" 12 | 13 | n0=`namegen` 14 | 15 | cp -pf `which sleep` ${n0} 16 | ./${n0} 3 & 17 | expect ETXTBSY open ${n0} O_WRONLY 18 | expect ETXTBSY open ${n0} O_RDWR 19 | expect ETXTBSY open ${n0} O_RDONLY,O_TRUNC 20 | expect 0 unlink ${n0} 21 | ;; 22 | *) 23 | quick_exit 24 | ;; 25 | esac 26 | -------------------------------------------------------------------------------- /tests/open/21.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/21.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT open NULL O_RDONLY 12 | expect EFAULT open DEADCODE O_RDONLY 13 | -------------------------------------------------------------------------------- /tests/open/22.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/22.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EEXIST when O_CREAT and O_EXCL were specified and the file exists" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${n0} 0644 14 | expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 15 | expect 0 unlink ${n0} 16 | 17 | expect 0 mkdir ${n0} 0755 18 | expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 19 | expect 0 rmdir ${n0} 20 | 21 | expect 0 mkfifo ${n0} 0644 22 | expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 23 | expect 0 unlink ${n0} 24 | 25 | expect 0 symlink test ${n0} 26 | expect EEXIST open ${n0} O_CREAT,O_EXCL 0644 27 | expect 0 unlink ${n0} 28 | -------------------------------------------------------------------------------- /tests/open/23.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/open/23.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="open returns EINVAL when an attempt was made to open a descriptor with an illegal combination of O_RDONLY, O_WRONLY, and O_RDWR" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${n0} 0644 14 | case "${os}" in 15 | Linux) 16 | expect 0 open ${n0} O_WRONLY,O_RDWR 17 | expect 0 open ${n0} O_RDONLY,O_WRONLY,O_RDWR 18 | ;; 19 | *) 20 | expect EINVAL open ${n0} O_WRONLY,O_RDWR 21 | expect EINVAL open ${n0} O_RDONLY,O_WRONLY,O_RDWR 22 | ;; 23 | esac 24 | expect 0 unlink ${n0} 25 | -------------------------------------------------------------------------------- /tests/rename/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/00.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename changes file name" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..79" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | n3=`namegen` 15 | 16 | expect 0 mkdir ${n3} 0755 17 | cdir=`pwd` 18 | cd ${n3} 19 | 20 | expect 0 create ${n0} 0644 21 | expect regular,0644,1 lstat ${n0} type,mode,nlink 22 | inode=`${fstest} lstat ${n0} inode` 23 | expect 0 rename ${n0} ${n1} 24 | expect ENOENT lstat ${n0} type,mode,nlink 25 | expect regular,${inode},0644,1 lstat ${n1} type,inode,mode,nlink 26 | expect 0 link ${n1} ${n0} 27 | expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink 28 | expect regular,${inode},0644,2 lstat ${n1} type,inode,mode,nlink 29 | expect 0 rename ${n1} ${n2} 30 | expect regular,${inode},0644,2 lstat ${n0} type,inode,mode,nlink 31 | expect ENOENT lstat ${n1} type,mode,nlink 32 | expect regular,${inode},0644,2 lstat ${n2} type,inode,mode,nlink 33 | expect 0 unlink ${n0} 34 | expect 0 unlink ${n2} 35 | 36 | expect 0 mkdir ${n0} 0755 37 | expect dir,0755 lstat ${n0} type,mode 38 | inode=`${fstest} lstat ${n0} inode` 39 | expect 0 rename ${n0} ${n1} 40 | expect ENOENT lstat ${n0} type,mode 41 | expect dir,${inode},0755 lstat ${n1} type,inode,mode 42 | expect 0 rmdir ${n1} 43 | 44 | expect 0 mkfifo ${n0} 0644 45 | expect fifo,0644,1 lstat ${n0} type,mode,nlink 46 | inode=`${fstest} lstat ${n0} inode` 47 | expect 0 rename ${n0} ${n1} 48 | expect ENOENT lstat ${n0} type,mode,nlink 49 | expect fifo,${inode},0644,1 lstat ${n1} type,inode,mode,nlink 50 | expect 0 link ${n1} ${n0} 51 | expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink 52 | expect fifo,${inode},0644,2 lstat ${n1} type,inode,mode,nlink 53 | expect 0 rename ${n1} ${n2} 54 | expect fifo,${inode},0644,2 lstat ${n0} type,inode,mode,nlink 55 | expect ENOENT lstat ${n1} type,mode,nlink 56 | expect fifo,${inode},0644,2 lstat ${n2} type,inode,mode,nlink 57 | expect 0 unlink ${n0} 58 | expect 0 unlink ${n2} 59 | 60 | expect 0 create ${n0} 0644 61 | rinode=`${fstest} lstat ${n0} inode` 62 | expect regular,0644 lstat ${n0} type,mode 63 | expect 0 symlink ${n0} ${n1} 64 | sinode=`${fstest} lstat ${n1} inode` 65 | expect regular,${rinode},0644 stat ${n1} type,inode,mode 66 | expect symlink,${sinode} lstat ${n1} type,inode 67 | expect 0 rename ${n1} ${n2} 68 | expect regular,${rinode},0644 stat ${n0} type,inode,mode 69 | expect ENOENT lstat ${n1} type,mode 70 | expect symlink,${sinode} lstat ${n2} type,inode 71 | expect 0 unlink ${n0} 72 | expect 0 unlink ${n2} 73 | 74 | # successful rename(2) updates ctime. 75 | expect 0 create ${n0} 0644 76 | ctime1=`${fstest} stat ${n0} ctime` 77 | sleep 1 78 | expect 0 rename ${n0} ${n1} 79 | ctime2=`${fstest} stat ${n1} ctime` 80 | test_check $ctime1 -lt $ctime2 81 | expect 0 unlink ${n1} 82 | 83 | expect 0 mkdir ${n0} 0755 84 | ctime1=`${fstest} stat ${n0} ctime` 85 | sleep 1 86 | expect 0 rename ${n0} ${n1} 87 | ctime2=`${fstest} stat ${n1} ctime` 88 | test_check $ctime1 -lt $ctime2 89 | expect 0 rmdir ${n1} 90 | 91 | expect 0 mkfifo ${n0} 0644 92 | ctime1=`${fstest} stat ${n0} ctime` 93 | sleep 1 94 | expect 0 rename ${n0} ${n1} 95 | ctime2=`${fstest} stat ${n1} ctime` 96 | test_check $ctime1 -lt $ctime2 97 | expect 0 unlink ${n1} 98 | 99 | expect 0 symlink ${n2} ${n0} 100 | ctime1=`${fstest} lstat ${n0} ctime` 101 | sleep 1 102 | expect 0 rename ${n0} ${n1} 103 | ctime2=`${fstest} lstat ${n1} ctime` 104 | test_check $ctime1 -lt $ctime2 105 | expect 0 unlink ${n1} 106 | 107 | # unsuccessful link(2) does not update ctime. 108 | expect 0 create ${n0} 0644 109 | ctime1=`${fstest} stat ${n0} ctime` 110 | sleep 1 111 | expect EACCES -u 65534 rename ${n0} ${n1} 112 | ctime2=`${fstest} stat ${n0} ctime` 113 | test_check $ctime1 -eq $ctime2 114 | expect 0 unlink ${n0} 115 | 116 | expect 0 mkdir ${n0} 0755 117 | ctime1=`${fstest} stat ${n0} ctime` 118 | sleep 1 119 | expect EACCES -u 65534 rename ${n0} ${n1} 120 | ctime2=`${fstest} stat ${n0} ctime` 121 | test_check $ctime1 -eq $ctime2 122 | expect 0 rmdir ${n0} 123 | 124 | expect 0 mkfifo ${n0} 0644 125 | ctime1=`${fstest} stat ${n0} ctime` 126 | sleep 1 127 | expect EACCES -u 65534 rename ${n0} ${n1} 128 | ctime2=`${fstest} stat ${n0} ctime` 129 | test_check $ctime1 -eq $ctime2 130 | expect 0 unlink ${n0} 131 | 132 | expect 0 symlink ${n2} ${n0} 133 | ctime1=`${fstest} lstat ${n0} ctime` 134 | sleep 1 135 | expect EACCES -u 65534 rename ${n0} ${n1} 136 | ctime2=`${fstest} lstat ${n0} ctime` 137 | test_check $ctime1 -eq $ctime2 138 | expect 0 unlink ${n0} 139 | 140 | cd ${cdir} 141 | expect 0 rmdir ${n3} 142 | -------------------------------------------------------------------------------- /tests/rename/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/01.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns ENAMETOOLONG if a component of either pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..8" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${name255} 0644 14 | expect 0 rename ${name255} ${n0} 15 | expect 0 rename ${n0} ${name255} 16 | expect 0 unlink ${name255} 17 | 18 | expect 0 create ${n0} 0644 19 | expect ENAMETOOLONG rename ${n0} ${name256} 20 | expect 0 unlink ${n0} 21 | expect ENAMETOOLONG rename ${name256} ${n0} 22 | -------------------------------------------------------------------------------- /tests/rename/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/02.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..14" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 mkdir ${name255} 0755 14 | expect 0 mkdir ${name255}/${name255} 0755 15 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 16 | expect 0 mkdir ${path1021} 0755 17 | expect 0 create ${n0} 0644 18 | expect 0 rename ${n0} ${path1023} 19 | expect 0 rename ${path1023} ${n0} 20 | expect ENAMETOOLONG rename ${n0} ${too_long} 21 | expect 0 unlink ${n0} 22 | create_too_long 23 | expect ENAMETOOLONG rename ${too_long} ${n0} 24 | unlink_too_long 25 | expect 0 rmdir ${path1021} 26 | expect 0 rmdir ${name255}/${name255}/${name255} 27 | expect 0 rmdir ${name255}/${name255} 28 | expect 0 rmdir ${name255} 29 | -------------------------------------------------------------------------------- /tests/rename/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/03.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns ENOENT if a component of the 'from' path does not exist, or a path prefix of 'to' does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect ENOENT rename ${n0}/${n1}/test ${n2} 17 | expect 0 create ${n2} 0644 18 | expect ENOENT rename ${n2} ${n0}/${n1}/test 19 | expect 0 unlink ${n2} 20 | expect 0 rmdir ${n0} 21 | -------------------------------------------------------------------------------- /tests/rename/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/04.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EACCES when a component of either path prefix denies search permission" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..18" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | n3=`namegen` 15 | n4=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 mkdir ${n1} 0755 22 | expect 0 chown ${n1} 65534 65534 23 | expect 0 mkdir ${n2} 0755 24 | expect 0 chown ${n2} 65534 65534 25 | expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 26 | 27 | expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} 28 | expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3} 29 | 30 | expect 0 chmod ${n1} 0644 31 | expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4} 32 | expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} 33 | 34 | expect 0 chmod ${n1} 0755 35 | expect 0 chmod ${n2} 0644 36 | expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} 37 | 38 | expect 0 unlink ${n1}/${n3} 39 | expect 0 rmdir ${n1} 40 | expect 0 rmdir ${n2} 41 | 42 | cd ${cdir} 43 | expect 0 rmdir ${n0} 44 | -------------------------------------------------------------------------------- /tests/rename/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/05.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EACCES when the requested link requires writing in a directory with a mode that denies write permission" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..17" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | n3=`namegen` 15 | n4=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | cdir=`pwd` 19 | cd ${n0} 20 | 21 | expect 0 mkdir ${n1} 0755 22 | expect 0 chown ${n1} 65534 65534 23 | expect 0 mkdir ${n2} 0755 24 | expect 0 chown ${n2} 65534 65534 25 | expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644 26 | 27 | expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} 28 | expect 0 -u 65534 -g 65534 rename ${n2}/${n4} ${n1}/${n3} 29 | 30 | expect 0 chmod ${n2} 0555 31 | expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n2}/${n4} 32 | expect 0 chmod ${n1} 0555 33 | expect EACCES -u 65534 -g 65534 rename ${n1}/${n3} ${n1}/${n4} 34 | expect 0 chmod ${n1} 0755 35 | 36 | expect 0 unlink ${n1}/${n3} 37 | expect 0 rmdir ${n1} 38 | expect 0 rmdir ${n2} 39 | 40 | cd ${cdir} 41 | expect 0 rmdir ${n0} 42 | -------------------------------------------------------------------------------- /tests/rename/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/06.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EPERM if the file pointed at by the 'from' argument has its immutable, undeletable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..84" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 create ${n0} 0644 17 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 18 | expect 0 chflags ${n0} ${flag} 19 | expect ${flag} stat ${n0} flags 20 | expect EPERM rename ${n0} ${n1} 21 | done 22 | expect 0 chflags ${n0} none 23 | expect 0 unlink ${n0} 24 | 25 | expect 0 mkdir ${n0} 0755 26 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 27 | expect 0 chflags ${n0} ${flag} 28 | expect ${flag} stat ${n0} flags 29 | expect EPERM rename ${n0} ${n1} 30 | done 31 | expect 0 chflags ${n0} none 32 | expect 0 rmdir ${n0} 33 | 34 | expect 0 mkfifo ${n0} 0644 35 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 36 | expect 0 chflags ${n0} ${flag} 37 | expect ${flag} stat ${n0} flags 38 | expect EPERM rename ${n0} ${n1} 39 | done 40 | expect 0 chflags ${n0} none 41 | expect 0 unlink ${n0} 42 | 43 | expect 0 symlink ${n1} ${n0} 44 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 45 | expect 0 lchflags ${n0} ${flag} 46 | expect ${flag} lstat ${n0} flags 47 | expect EPERM rename ${n0} ${n1} 48 | done 49 | expect 0 lchflags ${n0} none 50 | expect 0 unlink ${n0} 51 | -------------------------------------------------------------------------------- /tests/rename/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/07.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EPERM if the parent directory of the file pointed at by the 'from' argument has its immutable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..106" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | 19 | expect 0 create ${n0}/${n1} 0644 20 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do 21 | expect 0 chflags ${n0} ${flag} 22 | expect ${flag} stat ${n0} flags 23 | expect EPERM rename ${n0}/${n1} ${n2} 24 | done 25 | expect 0 chflags ${n0} none 26 | expect 0 unlink ${n0}/${n1} 27 | 28 | expect 0 mkdir ${n0}/${n1} 0755 29 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do 30 | expect 0 chflags ${n0} ${flag} 31 | expect ${flag} stat ${n0} flags 32 | expect EPERM rename ${n0}/${n1} ${n2} 33 | done 34 | expect 0 chflags ${n0} none 35 | expect 0 rmdir ${n0}/${n1} 36 | 37 | expect 0 mkfifo ${n0}/${n1} 0644 38 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do 39 | expect 0 chflags ${n0} ${flag} 40 | expect ${flag} stat ${n0} flags 41 | expect EPERM rename ${n0}/${n1} ${n2} 42 | done 43 | expect 0 chflags ${n0} none 44 | expect 0 unlink ${n0}/${n1} 45 | 46 | expect 0 symlink ${n2} ${n0}/${n1} 47 | for flag in SF_IMMUTABLE UF_IMMUTABLE SF_APPEND UF_APPEND; do 48 | expect 0 chflags ${n0} ${flag} 49 | expect ${flag} stat ${n0} flags 50 | expect EPERM rename ${n0}/${n1} ${n2} 51 | done 52 | expect 0 chflags ${n0} none 53 | expect 0 unlink ${n0}/${n1} 54 | 55 | expect 0 create ${n0}/${n1} 0644 56 | for flag in SF_NOUNLINK UF_NOUNLINK; do 57 | expect 0 chflags ${n0} ${flag} 58 | expect ${flag} stat ${n0} flags 59 | expect 0 rename ${n0}/${n1} ${n2} 60 | expect 0 rename ${n2} ${n0}/${n1} 61 | done 62 | expect 0 chflags ${n0} none 63 | expect 0 unlink ${n0}/${n1} 64 | 65 | expect 0 mkdir ${n0}/${n1} 0755 66 | for flag in SF_NOUNLINK UF_NOUNLINK; do 67 | expect 0 chflags ${n0} ${flag} 68 | expect ${flag} stat ${n0} flags 69 | expect 0 rename ${n0}/${n1} ${n2} 70 | expect 0 rename ${n2} ${n0}/${n1} 71 | done 72 | expect 0 chflags ${n0} none 73 | expect 0 rmdir ${n0}/${n1} 74 | 75 | expect 0 mkfifo ${n0}/${n1} 0644 76 | for flag in SF_NOUNLINK UF_NOUNLINK; do 77 | expect 0 chflags ${n0} ${flag} 78 | expect ${flag} stat ${n0} flags 79 | expect 0 rename ${n0}/${n1} ${n2} 80 | expect 0 rename ${n2} ${n0}/${n1} 81 | done 82 | expect 0 chflags ${n0} none 83 | expect 0 unlink ${n0}/${n1} 84 | 85 | expect 0 symlink ${n2} ${n0}/${n1} 86 | for flag in SF_NOUNLINK UF_NOUNLINK; do 87 | expect 0 chflags ${n0} ${flag} 88 | expect ${flag} stat ${n0} flags 89 | expect 0 rename ${n0}/${n1} ${n2} 90 | expect 0 rename ${n2} ${n0}/${n1} 91 | done 92 | expect 0 chflags ${n0} none 93 | expect 0 unlink ${n0}/${n1} 94 | 95 | expect 0 rmdir ${n0} 96 | -------------------------------------------------------------------------------- /tests/rename/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/08.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EPERM if the parent directory of the file pointed at by the 'to' argument has its immutable flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..126" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | 19 | expect 0 create ${n1} 0644 20 | for flag in SF_IMMUTABLE UF_IMMUTABLE; do 21 | expect 0 chflags ${n0} ${flag} 22 | expect ${flag} stat ${n0} flags 23 | expect EPERM rename ${n1} ${n0}/${n2} 24 | done 25 | expect 0 chflags ${n0} none 26 | expect 0 unlink ${n1} 27 | 28 | expect 0 mkdir ${n1} 0755 29 | for flag in SF_IMMUTABLE UF_IMMUTABLE; do 30 | expect 0 chflags ${n0} ${flag} 31 | expect ${flag} stat ${n0} flags 32 | expect EPERM rename ${n1} ${n0}/${n2} 33 | done 34 | expect 0 chflags ${n0} none 35 | expect 0 rmdir ${n1} 36 | 37 | expect 0 mkfifo ${n1} 0644 38 | for flag in SF_IMMUTABLE UF_IMMUTABLE; do 39 | expect 0 chflags ${n0} ${flag} 40 | expect ${flag} stat ${n0} flags 41 | expect EPERM rename ${n1} ${n0}/${n2} 42 | done 43 | expect 0 chflags ${n0} none 44 | expect 0 unlink ${n1} 45 | 46 | expect 0 symlink ${n2} ${n1} 47 | for flag in SF_IMMUTABLE UF_IMMUTABLE; do 48 | expect 0 chflags ${n0} ${flag} 49 | expect ${flag} stat ${n0} flags 50 | expect EPERM rename ${n1} ${n0}/${n2} 51 | done 52 | expect 0 chflags ${n0} none 53 | expect 0 unlink ${n1} 54 | 55 | expect 0 create ${n1} 0644 56 | for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 57 | expect 0 chflags ${n0} ${flag} 58 | expect ${flag} stat ${n0} flags 59 | expect 0 rename ${n1} ${n0}/${n2} 60 | expect 0 chflags ${n0} none 61 | expect 0 rename ${n0}/${n2} ${n1} 62 | done 63 | expect 0 unlink ${n1} 64 | 65 | expect 0 mkdir ${n1} 0755 66 | for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 67 | expect 0 chflags ${n0} ${flag} 68 | expect ${flag} stat ${n0} flags 69 | expect 0 rename ${n1} ${n0}/${n2} 70 | expect 0 chflags ${n0} none 71 | expect 0 rename ${n0}/${n2} ${n1} 72 | done 73 | expect 0 rmdir ${n1} 74 | 75 | expect 0 mkfifo ${n1} 0644 76 | for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 77 | expect 0 chflags ${n0} ${flag} 78 | expect ${flag} stat ${n0} flags 79 | expect 0 rename ${n1} ${n0}/${n2} 80 | expect 0 chflags ${n0} none 81 | expect 0 rename ${n0}/${n2} ${n1} 82 | done 83 | expect 0 unlink ${n1} 84 | 85 | expect 0 symlink ${n2} ${n1} 86 | for flag in SF_APPEND UF_APPEND SF_NOUNLINK UF_NOUNLINK; do 87 | expect 0 chflags ${n0} ${flag} 88 | expect ${flag} stat ${n0} flags 89 | expect 0 rename ${n1} ${n0}/${n2} 90 | expect 0 chflags ${n0} none 91 | expect 0 rename ${n0}/${n2} ${n1} 92 | done 93 | expect 0 unlink ${n1} 94 | 95 | expect 0 rmdir ${n0} 96 | -------------------------------------------------------------------------------- /tests/rename/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/09.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EACCES or EPERM if the directory containing 'from' is marked sticky, and neither the containing directory nor 'from' are owned by the effective user ID" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..56" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | n3=`namegen` 15 | n4=`namegen` 16 | 17 | expect 0 mkdir ${n4} 0755 18 | cdir=`pwd` 19 | cd ${n4} 20 | 21 | expect 0 mkdir ${n0} 0755 22 | expect 0 chown ${n0} 65534 65534 23 | expect 0 chmod ${n0} 01777 24 | 25 | expect 0 mkdir ${n1} 0755 26 | 27 | # User owns both: the sticky directory and the file to be renamed. 28 | expect 0 chown ${n1} 65534 65534 29 | expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 30 | expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} 31 | expect 0 unlink ${n1}/${n3} 32 | # User owns the file to be renamed, but doesn't own the sticky directory. 33 | expect 0 chown ${n1} 65533 65533 34 | expect 0 -u 65533 -g 65533 create ${n0}/${n2} 0644 35 | expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} 36 | expect 0 unlink ${n1}/${n3} 37 | # User owns the sticky directory, but doesn't own the file to be renamed. 38 | expect 0 chown ${n1} 65534 65534 39 | expect 0 -u 65533 -g 65533 create ${n0}/${n2} 0644 40 | expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} 41 | expect 0 unlink ${n1}/${n3} 42 | # User doesn't own the sticky directory nor the file to be renamed. 43 | expect 0 chown ${n1} 65533 65533 44 | expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644 45 | expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} 46 | expect 0 unlink ${n0}/${n2} 47 | 48 | # User owns both: the sticky directory and the fifo to be renamed. 49 | expect 0 chown ${n1} 65534 65534 50 | expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 51 | expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} 52 | expect 0 unlink ${n1}/${n3} 53 | # User owns the fifo to be renamed, but doesn't own the sticky directory. 54 | expect 0 chown ${n1} 65533 65533 55 | expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n2} 0644 56 | expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} 57 | expect 0 unlink ${n1}/${n3} 58 | # User owns the sticky directory, but doesn't own the fifo to be renamed. 59 | expect 0 chown ${n1} 65534 65534 60 | expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n2} 0644 61 | expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} 62 | expect 0 unlink ${n1}/${n3} 63 | # User doesn't own the sticky directory nor the fifo to be renamed. 64 | expect 0 chown ${n1} 65533 65533 65 | expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644 66 | expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} 67 | expect 0 unlink ${n0}/${n2} 68 | 69 | # User owns both: the sticky directory and the symlink to be renamed. 70 | expect 0 chown ${n1} 65534 65534 71 | expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} 72 | expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} 73 | expect 0 unlink ${n1}/${n3} 74 | # User owns the symlink to be renamed, but doesn't own the sticky directory. 75 | expect 0 chown ${n1} 65533 65533 76 | expect 0 -u 65533 -g 65533 symlink test ${n0}/${n2} 77 | expect 0 -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} 78 | expect 0 unlink ${n1}/${n3} 79 | # User owns the sticky directory, but doesn't own the symlink to be renamed. 80 | expect 0 chown ${n1} 65534 65534 81 | expect 0 -u 65533 -g 65533 symlink test ${n0}/${n2} 82 | expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3} 83 | expect 0 unlink ${n1}/${n3} 84 | # User doesn't own the sticky directory nor the symlink to be renamed. 85 | expect 0 chown ${n1} 65533 65533 86 | expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2} 87 | expect "EACCES|EPERM" -u 65533 -g 65533 rename ${n0}/${n2} ${n1}/${n3} 88 | expect 0 unlink ${n0}/${n2} 89 | 90 | expect 0 rmdir ${n1} 91 | expect 0 rmdir ${n0} 92 | 93 | cd ${cdir} 94 | expect 0 rmdir ${n4} 95 | -------------------------------------------------------------------------------- /tests/rename/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/11.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns ELOOP if too many symbolic links were encountered in translating one of the pathnames" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 symlink ${n0} ${n1} 16 | expect 0 symlink ${n1} ${n0} 17 | expect ELOOP rename ${n0}/test ${n2} 18 | expect ELOOP rename ${n1}/test ${n2} 19 | expect 0 create ${n2} 0644 20 | expect ELOOP rename ${n2} ${n0}/test 21 | expect ELOOP rename ${n2} ${n1}/test 22 | expect 0 unlink ${n0} 23 | expect 0 unlink ${n1} 24 | expect 0 unlink ${n2} 25 | -------------------------------------------------------------------------------- /tests/rename/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/12.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns ENOTDIR if a component of either path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..8" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect 0 create ${n0}/${n1} 0644 17 | expect ENOTDIR rename ${n0}/${n1}/test ${n0}/${n2} 18 | expect 0 create ${n0}/${n2} 0644 19 | expect ENOTDIR link ${n0}/${n2} ${n0}/${n1}/test 20 | expect 0 unlink ${n0}/${n1} 21 | expect 0 unlink ${n0}/${n2} 22 | expect 0 rmdir ${n0} 23 | -------------------------------------------------------------------------------- /tests/rename/13.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/13.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns ENOTDIR when the 'from' argument is a directory, but 'to' is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..17" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | 16 | expect 0 create ${n1} 0644 17 | expect ENOTDIR rename ${n0} ${n1} 18 | expect dir lstat ${n0} type 19 | expect regular lstat ${n1} type 20 | expect 0 unlink ${n1} 21 | 22 | expect 0 mkfifo ${n1} 0644 23 | expect ENOTDIR rename ${n0} ${n1} 24 | expect dir lstat ${n0} type 25 | expect fifo lstat ${n1} type 26 | expect 0 unlink ${n1} 27 | 28 | expect 0 symlink test ${n1} 29 | expect ENOTDIR rename ${n0} ${n1} 30 | expect dir lstat ${n0} type 31 | expect symlink lstat ${n1} type 32 | expect 0 unlink ${n1} 33 | 34 | expect 0 rmdir ${n0} 35 | -------------------------------------------------------------------------------- /tests/rename/14.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/14.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EISDIR when the 'to' argument is a directory, but 'from' is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..17" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | 16 | expect 0 create ${n1} 0644 17 | expect EISDIR rename ${n1} ${n0} 18 | expect dir lstat ${n0} type 19 | expect regular lstat ${n1} type 20 | expect 0 unlink ${n1} 21 | 22 | expect 0 mkfifo ${n1} 0644 23 | expect EISDIR rename ${n1} ${n0} 24 | expect dir lstat ${n0} type 25 | expect fifo lstat ${n1} type 26 | expect 0 unlink ${n1} 27 | 28 | expect 0 symlink test ${n1} 29 | expect EISDIR rename ${n1} ${n0} 30 | expect dir lstat ${n0} type 31 | expect symlink lstat ${n1} type 32 | expect 0 unlink ${n1} 33 | 34 | expect 0 rmdir ${n0} 35 | -------------------------------------------------------------------------------- /tests/rename/15.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/15.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EXDEV if the link named by 'to' and the file named by 'from' are on different file systems" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..14" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 1m` 19 | newfs /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | 22 | expect 0 create ${n0}/${n1} 0644 23 | expect EXDEV rename ${n0}/${n1} ${n2} 24 | expect 0 unlink ${n0}/${n1} 25 | 26 | expect 0 mkdir ${n0}/${n1} 0755 27 | expect EXDEV rename ${n0}/${n1} ${n2} 28 | expect 0 rmdir ${n0}/${n1} 29 | 30 | expect 0 mkfifo ${n0}/${n1} 0644 31 | expect EXDEV rename ${n0}/${n1} ${n2} 32 | expect 0 unlink ${n0}/${n1} 33 | 34 | expect 0 symlink test ${n0}/${n1} 35 | expect EXDEV rename ${n0}/${n1} ${n2} 36 | expect 0 unlink ${n0}/${n1} 37 | 38 | umount /dev/md${n} 39 | mdconfig -d -u ${n} 40 | expect 0 rmdir ${n0} 41 | ;; 42 | *) 43 | quick_exit 44 | ;; 45 | esac 46 | -------------------------------------------------------------------------------- /tests/rename/16.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/16.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EROFS if the requested link requires writing in a directory on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..8" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 1m` 19 | newfs /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | expect 0 create ${n0}/${n1} 0644 22 | mount -ur /dev/md${n} 23 | 24 | expect EROFS rename ${n0}/${n1} ${n0}/${n2} 25 | expect EROFS rename ${n0}/${n1} ${n2} 26 | expect 0 create ${n2} 0644 27 | expect EROFS rename ${n2} ${n0}/${n2} 28 | expect 0 unlink ${n2} 29 | 30 | umount /dev/md${n} 31 | mdconfig -d -u ${n} 32 | expect 0 rmdir ${n0} 33 | ;; 34 | *) 35 | quick_exit 36 | ;; 37 | esac 38 | -------------------------------------------------------------------------------- /tests/rename/17.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/17.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EFAULT if one of the pathnames specified is outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..8" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${n0} 0644 14 | expect EFAULT rename ${n0} NULL 15 | expect EFAULT rename ${n0} DEADCODE 16 | expect 0 unlink ${n0} 17 | expect EFAULT rename NULL ${n0} 18 | expect EFAULT rename DEADCODE ${n0} 19 | expect EFAULT rename NULL DEADCODE 20 | expect EFAULT rename DEADCODE NULL 21 | -------------------------------------------------------------------------------- /tests/rename/18.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/18.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EINVAL when the 'from' argument is a parent directory of 'to'" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect 0 mkdir ${n0}/${n1} 0755 17 | 18 | expect EINVAL rename ${n0} ${n0}/${n1} 19 | expect EINVAL rename ${n0} ${n0}/${n1}/${n2} 20 | 21 | expect 0 rmdir ${n0}/${n1} 22 | expect 0 rmdir ${n0} 23 | -------------------------------------------------------------------------------- /tests/rename/19.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/19.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EINVAL when an attempt is made to rename '.' or '..'" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect 0 mkdir ${n0}/${n1} 0755 17 | 18 | case "${os}" in 19 | Linux) 20 | expect EBUSY rename ${n0}/${n1}/. ${n2} 21 | expect EBUSY rename ${n0}/${n1}/.. ${n2} 22 | ;; 23 | *) 24 | expect EINVAL rename ${n0}/${n1}/. ${n2} 25 | expect EINVAL rename ${n0}/${n1}/.. ${n2} 26 | ;; 27 | esac 28 | 29 | expect 0 rmdir ${n0}/${n1} 30 | expect 0 rmdir ${n0} 31 | -------------------------------------------------------------------------------- /tests/rename/20.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rename/20.t,v 1.1 2007/01/17 01:42:10 pjd Exp $ 3 | 4 | desc="rename returns EEXIST or ENOTEMPTY if the 'to' argument is a directory and is not empty" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..16" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect 0 mkdir ${n1} 0755 17 | 18 | expect 0 create ${n1}/${n2} 0644 19 | expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} 20 | expect 0 unlink ${n1}/${n2} 21 | 22 | expect 0 mkdir ${n1}/${n2} 0755 23 | expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} 24 | expect 0 rmdir ${n1}/${n2} 25 | 26 | expect 0 mkfifo ${n1}/${n2} 0644 27 | expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} 28 | expect 0 unlink ${n1}/${n2} 29 | 30 | expect 0 symlink test ${n1}/${n2} 31 | expect "EEXIST|ENOTEMPTY" rename ${n0} ${n1} 32 | expect 0 unlink ${n1}/${n2} 33 | 34 | expect 0 rmdir ${n1} 35 | expect 0 rmdir ${n0} 36 | -------------------------------------------------------------------------------- /tests/rmdir/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/00.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir removes directories" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect dir lstat ${n0} type 16 | expect 0 rmdir ${n0} 17 | expect ENOENT lstat ${n0} type 18 | 19 | expect 0 mkdir ${n0} 0755 20 | expect 0 mkdir ${n0}/${n1} 0755 21 | time=`${fstest} stat ${n0} ctime` 22 | sleep 1 23 | expect 0 rmdir ${n0}/${n1} 24 | mtime=`${fstest} stat ${n0} mtime` 25 | test_check $time -lt $mtime 26 | ctime=`${fstest} stat ${n0} ctime` 27 | test_check $time -lt $ctime 28 | expect 0 rmdir ${n0} 29 | -------------------------------------------------------------------------------- /tests/rmdir/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/01.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns ENOTDIR if a component of the path is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..14" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR rmdir ${n0}/${n1}/test 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | 20 | expect 0 create ${n0} 0644 21 | expect ENOTDIR rmdir ${n0} 22 | expect 0 unlink ${n0} 23 | 24 | expect 0 symlink ${n1} ${n0} 25 | expect ENOTDIR rmdir ${n0} 26 | expect 0 unlink ${n0} 27 | 28 | expect 0 mkfifo ${n0} 0644 29 | expect ENOTDIR rmdir ${n0} 30 | expect 0 unlink ${n0} 31 | -------------------------------------------------------------------------------- /tests/rmdir/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/02.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 rmdir ${name255} 13 | expect ENOENT rmdir ${name255} 14 | expect ENAMETOOLONG rmdir ${name256} 15 | -------------------------------------------------------------------------------- /tests/rmdir/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/03.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 mkdir ${path1023} 0755 16 | expect 0 rmdir ${path1023} 17 | expect ENOENT rmdir ${path1023} 18 | create_too_long 19 | expect ENAMETOOLONG rmdir ${too_long} 20 | unlink_too_long 21 | expect 0 rmdir ${path1021} 22 | expect 0 rmdir ${name255}/${name255}/${name255} 23 | expect 0 rmdir ${name255}/${name255} 24 | expect 0 rmdir ${name255} 25 | -------------------------------------------------------------------------------- /tests/rmdir/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/04.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns ENOENT if the named directory does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 rmdir ${n0} 16 | expect ENOENT rmdir ${n0} 17 | expect ENOENT rmdir ${n1} 18 | -------------------------------------------------------------------------------- /tests/rmdir/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/05.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP rmdir ${n0}/test 17 | expect ELOOP rmdir ${n1}/test 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/rmdir/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/06.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EEXIST or ENOTEMPTY the named directory contains files other than '.' and '..' in it" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..20" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 mkdir ${n0}/${n1} 0755 16 | expect "EEXIST|ENOTEMPTY" rmdir ${n0} 17 | expect 0 rmdir ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | 20 | expect 0 mkdir ${n0} 0755 21 | expect 0 create ${n0}/${n1} 0644 22 | expect "EEXIST|ENOTEMPTY" rmdir ${n0} 23 | expect 0 unlink ${n0}/${n1} 24 | expect 0 rmdir ${n0} 25 | 26 | expect 0 mkdir ${n0} 0755 27 | expect 0 symlink test ${n0}/${n1} 28 | expect "EEXIST|ENOTEMPTY" rmdir ${n0} 29 | expect 0 unlink ${n0}/${n1} 30 | expect 0 rmdir ${n0} 31 | 32 | expect 0 mkdir ${n0} 0755 33 | expect 0 mkfifo ${n0}/${n1} 0644 34 | expect "EEXIST|ENOTEMPTY" rmdir ${n0} 35 | expect 0 unlink ${n0}/${n1} 36 | expect 0 rmdir ${n0} 37 | -------------------------------------------------------------------------------- /tests/rmdir/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/07.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 21 | expect 0 chmod ${n1} 0644 22 | expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2} 23 | expect 0 chmod ${n1} 0755 24 | expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} 25 | expect 0 rmdir ${n1} 26 | cd ${cdir} 27 | expect 0 rmdir ${n0} 28 | -------------------------------------------------------------------------------- /tests/rmdir/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/08.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EACCES when write permission is denied on the directory containing the link to be removed" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 mkdir ${n1}/${n2} 0755 21 | expect 0 chmod ${n1} 0555 22 | expect EACCES -u 65534 -g 65534 rmdir ${n1}/${n2} 23 | expect 0 chmod ${n1} 0755 24 | expect 0 -u 65534 -g 65534 rmdir ${n1}/${n2} 25 | expect 0 rmdir ${n1} 26 | cd ${cdir} 27 | expect 0 rmdir ${n0} 28 | -------------------------------------------------------------------------------- /tests/rmdir/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/09.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EPERM if the named file has its immutable, undeletable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | expect 0 chflags ${n0} SF_IMMUTABLE 17 | expect EPERM rmdir ${n0} 18 | expect 0 chflags ${n0} none 19 | expect 0 rmdir ${n0} 20 | 21 | expect 0 mkdir ${n0} 0755 22 | expect 0 chflags ${n0} UF_IMMUTABLE 23 | expect EPERM rmdir ${n0} 24 | expect 0 chflags ${n0} none 25 | expect 0 rmdir ${n0} 26 | 27 | expect 0 mkdir ${n0} 0755 28 | expect 0 chflags ${n0} SF_NOUNLINK 29 | expect EPERM rmdir ${n0} 30 | expect 0 chflags ${n0} none 31 | expect 0 rmdir ${n0} 32 | 33 | expect 0 mkdir ${n0} 0755 34 | expect 0 chflags ${n0} UF_NOUNLINK 35 | expect EPERM rmdir ${n0} 36 | expect 0 chflags ${n0} none 37 | expect 0 rmdir ${n0} 38 | 39 | expect 0 mkdir ${n0} 0755 40 | expect 0 chflags ${n0} SF_APPEND 41 | expect EPERM rmdir ${n0} 42 | expect 0 chflags ${n0} none 43 | expect 0 rmdir ${n0} 44 | 45 | expect 0 mkdir ${n0} 0755 46 | expect 0 chflags ${n0} UF_APPEND 47 | expect EPERM rmdir ${n0} 48 | expect 0 chflags ${n0} none 49 | expect 0 rmdir ${n0} 50 | -------------------------------------------------------------------------------- /tests/rmdir/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/10.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EPERM if the parent directory of the named file has its immutable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | 18 | expect 0 mkdir ${n0}/${n1} 0755 19 | expect 0 chflags ${n0} SF_IMMUTABLE 20 | expect EPERM rmdir ${n0}/${n1} 21 | expect 0 chflags ${n0} none 22 | expect 0 rmdir ${n0}/${n1} 23 | 24 | expect 0 mkdir ${n0}/${n1} 0755 25 | expect 0 chflags ${n0} UF_IMMUTABLE 26 | expect EPERM rmdir ${n0}/${n1} 27 | expect 0 chflags ${n0} none 28 | expect 0 rmdir ${n0}/${n1} 29 | 30 | expect 0 mkdir ${n0}/${n1} 0755 31 | expect 0 chflags ${n0} SF_APPEND 32 | expect EPERM rmdir ${n0}/${n1} 33 | expect 0 chflags ${n0} none 34 | expect 0 rmdir ${n0}/${n1} 35 | 36 | expect 0 mkdir ${n0}/${n1} 0755 37 | expect 0 chflags ${n0} UF_APPEND 38 | expect EPERM rmdir ${n0}/${n1} 39 | expect 0 chflags ${n0} none 40 | expect 0 rmdir ${n0}/${n1} 41 | 42 | expect 0 mkdir ${n0}/${n1} 0755 43 | expect 0 chflags ${n0} SF_NOUNLINK 44 | expect 0 rmdir ${n0}/${n1} 45 | expect 0 chflags ${n0} none 46 | 47 | expect 0 mkdir ${n0}/${n1} 0755 48 | expect 0 chflags ${n0} UF_NOUNLINK 49 | expect 0 rmdir ${n0}/${n1} 50 | expect 0 chflags ${n0} none 51 | 52 | expect 0 rmdir ${n0} 53 | -------------------------------------------------------------------------------- /tests/rmdir/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/11.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EACCES or EPERM if the directory containing the directory to be removed is marked sticky, and neither the containing directory nor the directory to be removed are owned by the effective user ID" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..15" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n2} 0755 16 | cdir=`pwd` 17 | cd ${n2} 18 | 19 | expect 0 mkdir ${n0} 0755 20 | expect 0 chown ${n0} 65534 65534 21 | expect 0 chmod ${n0} 01777 22 | 23 | # User owns both: the sticky directory and the directory to be removed. 24 | expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755 25 | expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} 26 | # User owns the directory to be removed, but doesn't own the sticky directory. 27 | expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755 28 | expect 0 -u 65533 -g 65533 rmdir ${n0}/${n1} 29 | # User owns the sticky directory, but doesn't own the directory to be removed. 30 | expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755 31 | expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} 32 | # User doesn't own the sticky directory nor the directory to be removed. 33 | expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755 34 | expect "EACCES|EPERM" -u 65533 -g 65533 rmdir ${n0}/${n1} 35 | expect 0 rmdir ${n0}/${n1} 36 | 37 | expect 0 rmdir ${n0} 38 | 39 | cd ${cdir} 40 | expect 0 rmdir ${n2} 41 | -------------------------------------------------------------------------------- /tests/rmdir/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/12.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EINVAL if the last component of the path is '.' or '..'" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 mkdir ${n0}/${n1} 0755 16 | expect EINVAL rmdir ${n0}/${n1}/. 17 | case "${os}" in 18 | FreeBSD) 19 | expect EINVAL rmdir ${n0}/${n1}/.. 20 | ;; 21 | Linux) 22 | expect 'ENOTEMPTY|EEXIST' rmdir ${n0}/${n1}/.. 23 | ;; 24 | *) 25 | expect EEXIST rmdir ${n0}/${n1}/.. 26 | ;; 27 | esac 28 | expect 0 rmdir ${n0}/${n1} 29 | expect 0 rmdir ${n0} 30 | -------------------------------------------------------------------------------- /tests/rmdir/13.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/13.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EBUSY if the directory to be removed is the mount point for a mounted file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..3" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | n=`mdconfig -a -n -t malloc -s 1m` 17 | newfs /dev/md${n} >/dev/null 18 | mount /dev/md${n} ${n0} 19 | expect EBUSY rmdir ${n0} 20 | umount /dev/md${n} 21 | mdconfig -d -u ${n} 22 | expect 0 rmdir ${n0} 23 | ;; 24 | *) 25 | quick_exit 26 | ;; 27 | esac 28 | -------------------------------------------------------------------------------- /tests/rmdir/14.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/14.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..5" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 mkdir ${n0}/${n1} 0755 21 | mount -ur /dev/md${n} 22 | expect EROFS rmdir ${n0}/${n1} 23 | mount -uw /dev/md${n} 24 | expect 0 rmdir ${n0}/${n1} 25 | umount /dev/md${n} 26 | mdconfig -d -u ${n} 27 | expect 0 rmdir ${n0} 28 | ;; 29 | *) 30 | quick_exit 31 | ;; 32 | esac 33 | -------------------------------------------------------------------------------- /tests/rmdir/15.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/rmdir/15.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="rmdir returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT rmdir NULL 12 | expect EFAULT rmdir DEADCODE 13 | -------------------------------------------------------------------------------- /tests/symlink/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/00.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink creates symbolic links" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..14" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 create ${n0} 0644 15 | expect regular,0644 lstat ${n0} type,mode 16 | expect 0 symlink ${n0} ${n1} 17 | expect symlink lstat ${n1} type 18 | expect regular,0644 stat ${n1} type,mode 19 | expect 0 unlink ${n0} 20 | expect ENOENT stat ${n1} type,mode 21 | expect 0 unlink ${n1} 22 | 23 | expect 0 mkdir ${n0} 0755 24 | time=`${fstest} stat ${n0} ctime` 25 | sleep 1 26 | expect 0 symlink test ${n0}/${n1} 27 | mtime=`${fstest} stat ${n0} mtime` 28 | test_check $time -lt $mtime 29 | ctime=`${fstest} stat ${n0} ctime` 30 | test_check $time -lt $ctime 31 | expect 0 unlink ${n0}/${n1} 32 | expect 0 rmdir ${n0} 33 | -------------------------------------------------------------------------------- /tests/symlink/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/01.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns ENOTDIR if a component of the name2 path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR symlink test ${n0}/${n1}/test 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/symlink/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/02.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns ENAMETOOLONG if a component of the name2 pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..7" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 symlink ${name255} ${n0} 14 | expect 0 unlink ${n0} 15 | expect 0 symlink ${n0} ${name255} 16 | expect 0 unlink ${name255} 17 | 18 | expect ENAMETOOLONG symlink ${n0} ${name256} 19 | expect 0 symlink ${name256} ${n0} 20 | expect 0 unlink ${n0} 21 | -------------------------------------------------------------------------------- /tests/symlink/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/03.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns ENAMETOOLONG if an entire length of either path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..14" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 symlink ${path1023} ${n0} 14 | expect 0 unlink ${n0} 15 | expect 0 mkdir ${name255} 0755 16 | expect 0 mkdir ${name255}/${name255} 0755 17 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 18 | expect 0 mkdir ${path1021} 0755 19 | expect 0 symlink ${n0} ${path1023} 20 | expect 0 unlink ${path1023} 21 | create_too_long 22 | expect ENAMETOOLONG symlink ${n0} ${too_long} 23 | expect ENAMETOOLONG symlink ${too_long} ${n0} 24 | unlink_too_long 25 | expect 0 rmdir ${path1021} 26 | expect 0 rmdir ${name255}/${name255}/${name255} 27 | expect 0 rmdir ${name255}/${name255} 28 | expect 0 rmdir ${name255} 29 | -------------------------------------------------------------------------------- /tests/symlink/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/04.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns ENOENT if a component of the name2 path prefix does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect ENOENT symlink test ${n0}/${n1}/test 16 | expect 0 rmdir ${n0} 17 | -------------------------------------------------------------------------------- /tests/symlink/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/05.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns EACCES when a component of the name2 path prefix denies search permission" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | 19 | expect 0 mkdir ${n1} 0755 20 | expect 0 chown ${n1} 65534 65534 21 | 22 | expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} 23 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 24 | 25 | expect 0 chmod ${n1} 0644 26 | expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2} 27 | expect 0 chmod ${n1} 0755 28 | expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} 29 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 30 | 31 | expect 0 rmdir ${n1} 32 | 33 | cd ${cdir} 34 | expect 0 rmdir ${n0} 35 | -------------------------------------------------------------------------------- /tests/symlink/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/06.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns EACCES if the parent directory of the file to be created denies write permission" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | 19 | expect 0 mkdir ${n1} 0755 20 | expect 0 chown ${n1} 65534 65534 21 | 22 | expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} 23 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 24 | 25 | expect 0 chmod ${n1} 0555 26 | expect EACCES -u 65534 -g 65534 symlink test ${n1}/${n2} 27 | expect 0 chmod ${n1} 0755 28 | expect 0 -u 65534 -g 65534 symlink test ${n1}/${n2} 29 | expect 0 unlink ${n1}/${n2} 30 | 31 | expect 0 rmdir ${n1} 32 | 33 | cd ${cdir} 34 | expect 0 rmdir ${n0} 35 | -------------------------------------------------------------------------------- /tests/symlink/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/07.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns ELOOP if too many symbolic links were encountered in translating the name2 path name" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP symlink test ${n0}/test 17 | expect ELOOP symlink test ${n1}/test 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/symlink/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/08.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns EEXIST if the name2 argument already exists" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..9" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${n0} 0644 14 | expect EEXIST symlink test ${n0} 15 | expect 0 unlink ${n0} 16 | 17 | expect 0 mkdir ${n0} 0755 18 | expect EEXIST symlink test ${n0} 19 | expect 0 rmdir ${n0} 20 | 21 | expect 0 symlink test ${n0} 22 | expect EEXIST symlink test ${n0} 23 | expect 0 unlink ${n0} 24 | -------------------------------------------------------------------------------- /tests/symlink/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/09.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns EPERM if the parent directory of the file named by name2 has its immutable flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | 18 | expect 0 symlink test ${n0}/${n1} 19 | expect 0 unlink ${n0}/${n1} 20 | 21 | expect 0 chflags ${n0} SF_IMMUTABLE 22 | expect EPERM symlink test ${n0}/${n1} 23 | expect 0 chflags ${n0} none 24 | expect 0 symlink test ${n0}/${n1} 25 | expect 0 unlink ${n0}/${n1} 26 | 27 | expect 0 chflags ${n0} UF_IMMUTABLE 28 | expect EPERM symlink test ${n0}/${n1} 29 | expect 0 chflags ${n0} none 30 | expect 0 symlink test ${n0}/${n1} 31 | expect 0 unlink ${n0}/${n1} 32 | 33 | expect 0 chflags ${n0} SF_APPEND 34 | expect 0 symlink test ${n0}/${n1} 35 | expect 0 chflags ${n0} none 36 | expect 0 unlink ${n0}/${n1} 37 | 38 | expect 0 chflags ${n0} UF_APPEND 39 | expect 0 symlink test ${n0}/${n1} 40 | expect 0 chflags ${n0} none 41 | expect 0 unlink ${n0}/${n1} 42 | 43 | expect 0 chflags ${n0} SF_NOUNLINK 44 | expect 0 symlink test ${n0}/${n1} 45 | expect 0 chflags ${n0} none 46 | expect 0 unlink ${n0}/${n1} 47 | 48 | expect 0 chflags ${n0} UF_NOUNLINK 49 | expect 0 symlink test ${n0}/${n1} 50 | expect 0 chflags ${n0} none 51 | expect 0 unlink ${n0}/${n1} 52 | 53 | expect 0 rmdir ${n0} 54 | -------------------------------------------------------------------------------- /tests/symlink/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/10.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns EROFS if the file name2 would reside on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..7" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | n2=`namegen` 16 | 17 | expect 0 mkdir ${n0} 0755 18 | n=`mdconfig -a -n -t malloc -s 1m` 19 | newfs /dev/md${n} >/dev/null 20 | mount /dev/md${n} ${n0} 21 | 22 | expect 0 symlink test ${n0}/${n1} 23 | expect 0 unlink ${n0}/${n1} 24 | mount -ur /dev/md${n} 25 | expect EROFS symlink test ${n0}/${n1} 26 | mount -uw /dev/md${n} 27 | expect 0 symlink test ${n0}/${n1} 28 | expect 0 unlink ${n0}/${n1} 29 | 30 | umount /dev/md${n} 31 | mdconfig -d -u ${n} 32 | expect 0 rmdir ${n0} 33 | ;; 34 | *) 35 | quick_exit 36 | ;; 37 | esac 38 | -------------------------------------------------------------------------------- /tests/symlink/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/11.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns ENOSPC if there are no free inodes on the file system on which the symbolic link is being created" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..3" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 256k` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | i=0 21 | while :; do 22 | ln -s test ${n0}/${i} >/dev/null 2>&1 23 | if [ $? -ne 0 ]; then 24 | break 25 | fi 26 | i=`expr $i + 1` 27 | done 28 | expect ENOSPC symlink test ${n0}/${n1} 29 | umount /dev/md${n} 30 | mdconfig -d -u ${n} 31 | expect 0 rmdir ${n0} 32 | ;; 33 | *) 34 | quick_exit 35 | ;; 36 | esac 37 | -------------------------------------------------------------------------------- /tests/symlink/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/symlink/12.t,v 1.1 2007/01/17 01:42:11 pjd Exp $ 3 | 4 | desc="symlink returns EFAULT if one of the pathnames specified is outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | 13 | expect EFAULT symlink NULL ${n0} 14 | expect EFAULT symlink DEADCODE ${n0} 15 | expect EFAULT symlink test NULL 16 | expect EFAULT symlink test DEADCODE 17 | expect EFAULT symlink NULL DEADCODE 18 | expect EFAULT symlink DEADCODE NULL 19 | -------------------------------------------------------------------------------- /tests/truncate/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/00.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate descrease/increase file size" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..21" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n1} 0755 15 | cdir=`pwd` 16 | cd ${n1} 17 | 18 | expect 0 create ${n0} 0644 19 | expect 0 truncate ${n0} 1234567 20 | expect 1234567 lstat ${n0} size 21 | expect 0 truncate ${n0} 567 22 | expect 567 lstat ${n0} size 23 | expect 0 unlink ${n0} 24 | 25 | dd if=/dev/random of=${n0} bs=12345 count=1 >/dev/null 2>&1 26 | expect 0 truncate ${n0} 23456 27 | expect 23456 lstat ${n0} size 28 | expect 0 truncate ${n0} 1 29 | expect 1 lstat ${n0} size 30 | expect 0 unlink ${n0} 31 | 32 | # successful truncate(2) updates ctime. 33 | expect 0 create ${n0} 0644 34 | ctime1=`${fstest} stat ${n0} ctime` 35 | sleep 1 36 | expect 0 truncate ${n0} 123 37 | ctime2=`${fstest} stat ${n0} ctime` 38 | test_check $ctime1 -lt $ctime2 39 | expect 0 unlink ${n0} 40 | 41 | # unsuccessful truncate(2) does not update ctime. 42 | expect 0 create ${n0} 0644 43 | ctime1=`${fstest} stat ${n0} ctime` 44 | sleep 1 45 | expect EACCES -u 65534 truncate ${n0} 123 46 | ctime2=`${fstest} stat ${n0} ctime` 47 | test_check $ctime1 -eq $ctime2 48 | expect 0 unlink ${n0} 49 | 50 | cd ${cdir} 51 | expect 0 rmdir ${n1} 52 | -------------------------------------------------------------------------------- /tests/truncate/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/01.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR truncate ${n0}/${n1}/test 123 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/truncate/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/02.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | expect 0 create ${name255} 0644 12 | expect 0 truncate ${name255} 123 13 | expect 123 stat ${name255} size 14 | expect 0 unlink ${name255} 15 | expect ENAMETOOLONG truncate ${name256} 123 16 | -------------------------------------------------------------------------------- /tests/truncate/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/03.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 create ${path1023} 0644 16 | expect 0 truncate ${path1023} 123 17 | expect 0 unlink ${path1023} 18 | create_too_long 19 | expect ENAMETOOLONG truncate ${too_long} 123 20 | unlink_too_long 21 | expect 0 rmdir ${path1021} 22 | expect 0 rmdir ${name255}/${name255}/${name255} 23 | expect 0 rmdir ${name255}/${name255} 24 | expect 0 rmdir ${name255} 25 | -------------------------------------------------------------------------------- /tests/truncate/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/04.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns ENOENT if the named file does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect ENOENT truncate ${n0}/${n1}/test 123 16 | expect ENOENT truncate ${n0}/${n1} 123 17 | expect 0 rmdir ${n0} 18 | -------------------------------------------------------------------------------- /tests/truncate/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/05.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..15" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 123 22 | expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size 23 | expect 0 chmod ${n1} 0644 24 | expect EACCES -u 65534 -g 65534 truncate ${n1}/${n2} 1234 25 | expect 0 chmod ${n1} 0755 26 | expect 123 -u 65534 -g 65534 stat ${n1}/${n2} size 27 | expect 0 -u 65534 -g 65534 truncate ${n1}/${n2} 1234 28 | expect 1234 -u 65534 -g 65534 stat ${n1}/${n2} size 29 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 30 | expect 0 rmdir ${n1} 31 | cd ${cdir} 32 | expect 0 rmdir ${n0} 33 | -------------------------------------------------------------------------------- /tests/truncate/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/06.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EACCES if the named file is not writable by the user" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..8" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | cdir=`pwd` 16 | cd ${n0} 17 | expect 0 create ${n1} 0644 18 | expect EACCES -u 65534 -g 65534 truncate ${n1} 123 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 chmod ${n1} 0444 21 | expect EACCES -u 65534 -g 65534 truncate ${n1} 123 22 | expect 0 unlink ${n1} 23 | cd ${cdir} 24 | expect 0 rmdir ${n0} 25 | -------------------------------------------------------------------------------- /tests/truncate/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/07.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP truncate ${n0}/test 123 17 | expect ELOOP truncate ${n1}/test 123 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/truncate/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/08.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EPERM if the named file has its immutable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..40" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 create ${n0} 0644 16 | expect 0 chflags ${n0} SF_IMMUTABLE 17 | expect EPERM truncate ${n0} 123 18 | expect 0 stat ${n0} size 19 | expect 0 chflags ${n0} none 20 | expect 0 truncate ${n0} 123 21 | expect 0 unlink ${n0} 22 | 23 | expect 0 create ${n0} 0644 24 | expect 0 chflags ${n0} UF_IMMUTABLE 25 | expect EPERM truncate ${n0} 123 26 | expect 0 stat ${n0} size 27 | expect 0 chflags ${n0} none 28 | expect 0 truncate ${n0} 123 29 | expect 0 unlink ${n0} 30 | 31 | expect 0 create ${n0} 0644 32 | expect 0 chflags ${n0} SF_APPEND 33 | expect EPERM truncate ${n0} 123 34 | expect 0 stat ${n0} size 35 | expect 0 chflags ${n0} none 36 | expect 0 truncate ${n0} 123 37 | expect 0 unlink ${n0} 38 | 39 | expect 0 create ${n0} 0644 40 | expect 0 chflags ${n0} UF_APPEND 41 | expect EPERM truncate ${n0} 123 42 | expect 0 stat ${n0} size 43 | expect 0 chflags ${n0} none 44 | expect 0 truncate ${n0} 123 45 | expect 0 unlink ${n0} 46 | 47 | expect 0 create ${n0} 0644 48 | expect 0 chflags ${n0} SF_NOUNLINK 49 | expect 0 truncate ${n0} 123 50 | expect 123 stat ${n0} size 51 | expect 0 chflags ${n0} none 52 | expect 0 unlink ${n0} 53 | 54 | expect 0 create ${n0} 0644 55 | expect 0 chflags ${n0} UF_NOUNLINK 56 | expect 0 truncate ${n0} 123 57 | expect 123 stat ${n0} size 58 | expect 0 chflags ${n0} none 59 | expect 0 unlink ${n0} 60 | -------------------------------------------------------------------------------- /tests/truncate/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/09.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EISDIR if the named file is a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 mkdir ${n0} 0755 14 | expect EISDIR truncate ${n0} 123 15 | expect 0 rmdir ${n0} 16 | -------------------------------------------------------------------------------- /tests/truncate/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/10.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..10" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 create ${n0}/${n1} 0644 21 | expect 0 truncate ${n0}/${n1} 123 22 | expect 123 stat ${n0}/${n1} size 23 | mount -ur /dev/md${n} 24 | expect EROFS truncate ${n0}/${n1} 1234 25 | expect 123 stat ${n0}/${n1} size 26 | mount -uw /dev/md${n} 27 | expect 0 truncate ${n0}/${n1} 1234 28 | expect 1234 stat ${n0}/${n1} size 29 | expect 0 unlink ${n0}/${n1} 30 | umount /dev/md${n} 31 | mdconfig -d -u ${n} 32 | expect 0 rmdir ${n0} 33 | ;; 34 | *) 35 | quick_exit 36 | ;; 37 | esac 38 | -------------------------------------------------------------------------------- /tests/truncate/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/11.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns ETXTBSY the file is a pure procedure (shared text) file that is being executed" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}" in 10 | FreeBSD) 11 | echo "1..2" 12 | 13 | n0=`namegen` 14 | 15 | cp -pf `which sleep` ${n0} 16 | ./${n0} 3 & 17 | expect ETXTBSY truncate ${n0} 123 18 | expect 0 unlink ${n0} 19 | ;; 20 | *) 21 | quick_exit 22 | ;; 23 | esac 24 | -------------------------------------------------------------------------------- /tests/truncate/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/12.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EFBIG or EINVAL if the length argument was greater than the maximum file size" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${n0} 0644 14 | r=`${fstest} truncate ${n0} 999999999999999 2>/dev/null` 15 | case "${r}" in 16 | EFBIG|EINVAL) 17 | expect 0 stat ${n0} size 18 | ;; 19 | 0) 20 | expect 999999999999999 stat ${n0} size 21 | ;; 22 | *) 23 | echo "not ok ${ntest}" 24 | ntest=`expr ${ntest} + 1` 25 | ;; 26 | esac 27 | expect 0 unlink ${n0} 28 | -------------------------------------------------------------------------------- /tests/truncate/13.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/13.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EINVAL if the length argument was less than 0" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 create ${n0} 0644 14 | expect EINVAL -- truncate ${n0} -1 15 | expect EINVAL -- truncate ${n0} -999999 16 | expect 0 unlink ${n0} 17 | -------------------------------------------------------------------------------- /tests/truncate/14.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/truncate/14.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="truncate returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT truncate NULL 123 12 | expect EFAULT truncate DEADCODE 123 13 | -------------------------------------------------------------------------------- /tests/unlink/00.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/00.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink removes regular files, symbolic links, fifos and sockets" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..55" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n2} 0755 16 | cdir=`pwd` 17 | cd ${n2} 18 | 19 | expect 0 create ${n0} 0644 20 | expect regular lstat ${n0} type 21 | expect 0 unlink ${n0} 22 | expect ENOENT lstat ${n0} type 23 | 24 | expect 0 symlink ${n1} ${n0} 25 | expect symlink lstat ${n0} type 26 | expect 0 unlink ${n0} 27 | expect ENOENT lstat ${n0} type 28 | 29 | expect 0 mkfifo ${n0} 0644 30 | expect fifo lstat ${n0} type 31 | expect 0 unlink ${n0} 32 | expect ENOENT lstat ${n0} type 33 | 34 | # TODO: sockets removal 35 | 36 | # successful unlink(2) updates ctime. 37 | expect 0 create ${n0} 0644 38 | expect 0 link ${n0} ${n1} 39 | ctime1=`${fstest} stat ${n0} ctime` 40 | sleep 1 41 | expect 0 unlink ${n1} 42 | ctime2=`${fstest} stat ${n0} ctime` 43 | test_check $ctime1 -lt $ctime2 44 | expect 0 unlink ${n0} 45 | 46 | expect 0 mkfifo ${n0} 0644 47 | expect 0 link ${n0} ${n1} 48 | ctime1=`${fstest} stat ${n0} ctime` 49 | sleep 1 50 | expect 0 unlink ${n1} 51 | ctime2=`${fstest} stat ${n0} ctime` 52 | test_check $ctime1 -lt $ctime2 53 | expect 0 unlink ${n0} 54 | 55 | # unsuccessful unlink(2) does not update ctime. 56 | expect 0 create ${n0} 0644 57 | ctime1=`${fstest} stat ${n0} ctime` 58 | sleep 1 59 | expect EACCES -u 65534 unlink ${n0} 60 | ctime2=`${fstest} stat ${n0} ctime` 61 | test_check $ctime1 -eq $ctime2 62 | expect 0 unlink ${n0} 63 | 64 | expect 0 mkfifo ${n0} 0644 65 | ctime1=`${fstest} stat ${n0} ctime` 66 | sleep 1 67 | expect EACCES -u 65534 unlink ${n0} 68 | ctime2=`${fstest} stat ${n0} ctime` 69 | test_check $ctime1 -eq $ctime2 70 | expect 0 unlink ${n0} 71 | 72 | expect 0 mkdir ${n0} 0755 73 | expect 0 create ${n0}/${n1} 0644 74 | time=`${fstest} stat ${n0} ctime` 75 | sleep 1 76 | expect 0 unlink ${n0}/${n1} 77 | mtime=`${fstest} stat ${n0} mtime` 78 | test_check $time -lt $mtime 79 | ctime=`${fstest} stat ${n0} ctime` 80 | test_check $time -lt $ctime 81 | expect 0 rmdir ${n0} 82 | 83 | expect 0 mkdir ${n0} 0755 84 | expect 0 mkfifo ${n0}/${n1} 0644 85 | time=`${fstest} stat ${n0} ctime` 86 | sleep 1 87 | expect 0 unlink ${n0}/${n1} 88 | mtime=`${fstest} stat ${n0} mtime` 89 | test_check $time -lt $mtime 90 | ctime=`${fstest} stat ${n0} ctime` 91 | test_check $time -lt $ctime 92 | expect 0 rmdir ${n0} 93 | 94 | expect 0 mkdir ${n0} 0755 95 | expect 0 symlink test ${n0}/${n1} 96 | time=`${fstest} stat ${n0} ctime` 97 | sleep 1 98 | expect 0 unlink ${n0}/${n1} 99 | mtime=`${fstest} stat ${n0} mtime` 100 | test_check $time -lt $mtime 101 | ctime=`${fstest} stat ${n0} ctime` 102 | test_check $time -lt $ctime 103 | expect 0 rmdir ${n0} 104 | 105 | expect 0 create ${n0} 0644 106 | expect 0 link ${n0} ${n1} 107 | time=`${fstest} stat ${n0} ctime` 108 | sleep 1 109 | expect 0 unlink ${n1} 110 | ctime=`${fstest} stat ${n0} ctime` 111 | test_check $time -lt $ctime 112 | expect 0 unlink ${n0} 113 | 114 | cd ${cdir} 115 | expect 0 rmdir ${n2} 116 | -------------------------------------------------------------------------------- /tests/unlink/01.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/01.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns ENOTDIR if a component of the path prefix is not a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..5" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 mkdir ${n0} 0755 15 | expect 0 create ${n0}/${n1} 0644 16 | expect ENOTDIR unlink ${n0}/${n1}/test 17 | expect 0 unlink ${n0}/${n1} 18 | expect 0 rmdir ${n0} 19 | -------------------------------------------------------------------------------- /tests/unlink/02.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/02.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns ENAMETOOLONG if a component of a pathname exceeded 255 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | expect 0 create ${name255} 0644 12 | expect 0 unlink ${name255} 13 | expect ENOENT unlink ${name255} 14 | expect ENAMETOOLONG unlink ${name256} 15 | -------------------------------------------------------------------------------- /tests/unlink/03.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/03.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns ENAMETOOLONG if an entire path name exceeded 1023 characters" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..12" 10 | 11 | expect 0 mkdir ${name255} 0755 12 | expect 0 mkdir ${name255}/${name255} 0755 13 | expect 0 mkdir ${name255}/${name255}/${name255} 0755 14 | expect 0 mkdir ${path1021} 0755 15 | expect 0 create ${path1023} 0644 16 | expect 0 unlink ${path1023} 17 | expect ENOENT unlink ${path1023} 18 | create_too_long 19 | expect ENAMETOOLONG unlink ${too_long} 20 | unlink_too_long 21 | expect 0 rmdir ${path1021} 22 | expect 0 rmdir ${name255}/${name255}/${name255} 23 | expect 0 rmdir ${name255}/${name255} 24 | expect 0 rmdir ${name255} 25 | -------------------------------------------------------------------------------- /tests/unlink/04.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/04.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns ENOENT if the named file does not exist" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..4" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 create ${n0} 0644 15 | expect 0 unlink ${n0} 16 | expect ENOENT unlink ${n0} 17 | expect ENOENT unlink ${n1} 18 | -------------------------------------------------------------------------------- /tests/unlink/05.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/05.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EACCES when search permission is denied for a component of the path prefix" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect 0 chmod ${n1} 0644 22 | expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2} 23 | expect 0 chmod ${n1} 0755 24 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 25 | expect 0 rmdir ${n1} 26 | cd ${cdir} 27 | expect 0 rmdir ${n0} 28 | -------------------------------------------------------------------------------- /tests/unlink/06.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/06.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EACCES when write permission is denied on the directory containing the link to be removed" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..10" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n0} 0755 16 | cdir=`pwd` 17 | cd ${n0} 18 | expect 0 mkdir ${n1} 0755 19 | expect 0 chown ${n1} 65534 65534 20 | expect 0 -u 65534 -g 65534 create ${n1}/${n2} 0644 21 | expect 0 chmod ${n1} 0555 22 | expect EACCES -u 65534 -g 65534 unlink ${n1}/${n2} 23 | expect 0 chmod ${n1} 0755 24 | expect 0 -u 65534 -g 65534 unlink ${n1}/${n2} 25 | expect 0 rmdir ${n1} 26 | cd ${cdir} 27 | expect 0 rmdir ${n0} 28 | -------------------------------------------------------------------------------- /tests/unlink/07.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/07.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns ELOOP if too many symbolic links were encountered in translating the pathname" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..6" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | 14 | expect 0 symlink ${n0} ${n1} 15 | expect 0 symlink ${n1} ${n0} 16 | expect ELOOP unlink ${n0}/test 17 | expect ELOOP unlink ${n1}/test 18 | expect 0 unlink ${n0} 19 | expect 0 unlink ${n1} 20 | -------------------------------------------------------------------------------- /tests/unlink/08.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/08.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EPERM if the named file is a directory" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..3" 10 | 11 | n0=`namegen` 12 | 13 | expect 0 mkdir ${n0} 0755 14 | case "${os}:${fs}" in 15 | SunOS:UFS) 16 | expect 0 unlink ${n0} 17 | expect ENOENT rmdir ${n0} 18 | ;; 19 | Linux:*) 20 | # Non-POSIX value returned by Linux since 2.1.132 21 | expect EISDIR unlink ${n0} 22 | expect 0 rmdir ${n0} 23 | ;; 24 | *) 25 | expect EPERM unlink ${n0} 26 | expect 0 rmdir ${n0} 27 | ;; 28 | esac 29 | -------------------------------------------------------------------------------- /tests/unlink/09.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/09.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EPERM if the named file has its immutable, undeletable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | 15 | expect 0 create ${n0} 0644 16 | expect 0 chflags ${n0} SF_IMMUTABLE 17 | expect EPERM unlink ${n0} 18 | expect 0 chflags ${n0} none 19 | expect 0 unlink ${n0} 20 | 21 | expect 0 create ${n0} 0644 22 | expect 0 chflags ${n0} UF_IMMUTABLE 23 | expect EPERM unlink ${n0} 24 | expect 0 chflags ${n0} none 25 | expect 0 unlink ${n0} 26 | 27 | expect 0 create ${n0} 0644 28 | expect 0 chflags ${n0} SF_NOUNLINK 29 | expect EPERM unlink ${n0} 30 | expect 0 chflags ${n0} none 31 | expect 0 unlink ${n0} 32 | 33 | expect 0 create ${n0} 0644 34 | expect 0 chflags ${n0} UF_NOUNLINK 35 | expect EPERM unlink ${n0} 36 | expect 0 chflags ${n0} none 37 | expect 0 unlink ${n0} 38 | 39 | expect 0 create ${n0} 0644 40 | expect 0 chflags ${n0} SF_APPEND 41 | expect EPERM unlink ${n0} 42 | expect 0 chflags ${n0} none 43 | expect 0 unlink ${n0} 44 | 45 | expect 0 create ${n0} 0644 46 | expect 0 chflags ${n0} UF_APPEND 47 | expect EPERM unlink ${n0} 48 | expect 0 chflags ${n0} none 49 | expect 0 unlink ${n0} 50 | -------------------------------------------------------------------------------- /tests/unlink/10.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/10.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EPERM if the parent directory of the named file has its immutable or append-only flag set" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | require chflags 10 | 11 | echo "1..30" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | 18 | expect 0 create ${n0}/${n1} 0644 19 | expect 0 chflags ${n0} SF_IMMUTABLE 20 | expect EPERM unlink ${n0}/${n1} 21 | expect 0 chflags ${n0} none 22 | expect 0 unlink ${n0}/${n1} 23 | 24 | expect 0 create ${n0}/${n1} 0644 25 | expect 0 chflags ${n0} UF_IMMUTABLE 26 | expect EPERM unlink ${n0}/${n1} 27 | expect 0 chflags ${n0} none 28 | expect 0 unlink ${n0}/${n1} 29 | 30 | expect 0 create ${n0}/${n1} 0644 31 | expect 0 chflags ${n0} SF_APPEND 32 | expect EPERM unlink ${n0}/${n1} 33 | expect 0 chflags ${n0} none 34 | expect 0 unlink ${n0}/${n1} 35 | 36 | expect 0 create ${n0}/${n1} 0644 37 | expect 0 chflags ${n0} UF_APPEND 38 | expect EPERM unlink ${n0}/${n1} 39 | expect 0 chflags ${n0} none 40 | expect 0 unlink ${n0}/${n1} 41 | 42 | expect 0 create ${n0}/${n1} 0644 43 | expect 0 chflags ${n0} SF_NOUNLINK 44 | expect 0 unlink ${n0}/${n1} 45 | expect 0 chflags ${n0} none 46 | 47 | expect 0 create ${n0}/${n1} 0644 48 | expect 0 chflags ${n0} UF_NOUNLINK 49 | expect 0 unlink ${n0}/${n1} 50 | expect 0 chflags ${n0} none 51 | 52 | expect 0 rmdir ${n0} 53 | -------------------------------------------------------------------------------- /tests/unlink/11.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/11.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EACCES or EPERM if the directory containing the file is marked sticky, and neither the containing directory nor the file to be removed are owned by the effective user ID" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..33" 10 | 11 | n0=`namegen` 12 | n1=`namegen` 13 | n2=`namegen` 14 | 15 | expect 0 mkdir ${n2} 0755 16 | cdir=`pwd` 17 | cd ${n2} 18 | 19 | expect 0 mkdir ${n0} 0755 20 | expect 0 chown ${n0} 65534 65534 21 | expect 0 chmod ${n0} 01777 22 | 23 | # User owns both: the sticky directory and the file to be removed. 24 | expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644 25 | expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} 26 | # User owns the file to be removed, but doesn't own the sticky directory. 27 | expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644 28 | expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} 29 | # User owns the sticky directory, but doesn't own the file to be removed. 30 | expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644 31 | expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} 32 | # User doesn't own the sticky directory nor the file to be removed. 33 | expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644 34 | expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} 35 | expect 0 unlink ${n0}/${n1} 36 | 37 | # User owns both: the sticky directory and the fifo to be removed. 38 | expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644 39 | expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} 40 | # User owns the fifo to be removed, but doesn't own the sticky directory. 41 | expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644 42 | expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} 43 | # User owns the sticky directory, but doesn't own the fifo to be removed. 44 | expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644 45 | expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} 46 | # User doesn't own the sticky directory nor the fifo to be removed. 47 | expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644 48 | expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} 49 | expect 0 unlink ${n0}/${n1} 50 | 51 | # User owns both: the sticky directory and the symlink to be removed. 52 | expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1} 53 | expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} 54 | # User owns the symlink to be removed, but doesn't own the sticky directory. 55 | expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1} 56 | expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} 57 | # User owns the sticky directory, but doesn't own the symlink to be removed. 58 | expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1} 59 | expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} 60 | # User doesn't own the sticky directory nor the symlink to be removed. 61 | expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1} 62 | expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} 63 | expect 0 unlink ${n0}/${n1} 64 | 65 | expect 0 rmdir ${n0} 66 | 67 | cd ${cdir} 68 | expect 0 rmdir ${n2} 69 | -------------------------------------------------------------------------------- /tests/unlink/12.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/12.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EROFS if the named file resides on a read-only file system" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | case "${os}:${fs}" in 10 | FreeBSD:UFS) 11 | echo "1..5" 12 | 13 | n0=`namegen` 14 | n1=`namegen` 15 | 16 | expect 0 mkdir ${n0} 0755 17 | n=`mdconfig -a -n -t malloc -s 1m` 18 | newfs /dev/md${n} >/dev/null 19 | mount /dev/md${n} ${n0} 20 | expect 0 create ${n0}/${n1} 0644 21 | mount -ur /dev/md${n} 22 | expect EROFS unlink ${n0}/${n1} 23 | mount -uw /dev/md${n} 24 | expect 0 unlink ${n0}/${n1} 25 | umount /dev/md${n} 26 | mdconfig -d -u ${n} 27 | expect 0 rmdir ${n0} 28 | ;; 29 | *) 30 | quick_exit 31 | ;; 32 | esac 33 | -------------------------------------------------------------------------------- /tests/unlink/13.t: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # $FreeBSD: src/tools/regression/fstest/tests/unlink/13.t,v 1.1 2007/01/17 01:42:12 pjd Exp $ 3 | 4 | desc="unlink returns EFAULT if the path argument points outside the process's allocated address space" 5 | 6 | dir=`dirname $0` 7 | . ${dir}/../misc.sh 8 | 9 | echo "1..2" 10 | 11 | expect EFAULT unlink NULL 12 | expect EFAULT unlink DEADCODE 13 | --------------------------------------------------------------------------------