diff options
author | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2010-08-12 20:35:14 +0000 |
---|---|---|
committer | Pawel Jakub Dawidek <pjd@FreeBSD.org> | 2010-08-12 20:35:14 +0000 |
commit | 5b2bae575b849feaf24ec5fed8ee7d8272c4bd78 (patch) | |
tree | 1755d0356deceae1da230931899e2677997e64c4 /tools | |
parent | 5ef8fb65f9c660828900812236eae0c851ef77ff (diff) | |
download | src-5b2bae575b849feaf24ec5fed8ee7d8272c4bd78.tar.gz src-5b2bae575b849feaf24ec5fed8ee7d8272c4bd78.zip |
More tests.
Notes
Notes:
svn path=/head/; revision=211242
Diffstat (limited to 'tools')
-rw-r--r-- | tools/regression/fstest/tests/rmdir/11.t | 33 | ||||
-rw-r--r-- | tools/regression/fstest/tests/unlink/11.t | 131 |
2 files changed, 63 insertions, 101 deletions
diff --git a/tools/regression/fstest/tests/rmdir/11.t b/tools/regression/fstest/tests/rmdir/11.t index b899948d11eb..6e4b0b1ebf85 100644 --- a/tools/regression/fstest/tests/rmdir/11.t +++ b/tools/regression/fstest/tests/rmdir/11.t @@ -6,7 +6,7 @@ desc="rmdir returns EACCES or EPERM if the directory containing the directory to dir=`dirname $0` . ${dir}/../misc.sh -echo "1..15" +echo "1..47" n0=`namegen` n1=`namegen` @@ -22,17 +22,34 @@ expect 0 chmod ${n0} 01777 # User owns both: the sticky directory and the directory to be removed. expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755 +expect dir,65534,65534 lstat ${n0}/${n1} type,uid,gid expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} +expect ENOENT lstat ${n0}/${n1} type # User owns the directory to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755 -expect 0 -u 65533 -g 65533 rmdir ${n0}/${n1} +for id in 0 65533; do + expect 0 chown ${n0} ${id} ${id} + create_file dir ${n0}/${n1} 65534 65534 + expect dir,65534,65534 lstat ${n0}/${n1} type,uid,gid + expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} + expect ENOENT lstat ${n0}/${n1} type +done # User owns the sticky directory, but doesn't own the directory to be removed. -expect 0 -u 65533 -g 65533 mkdir ${n0}/${n1} 0755 -expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} +expect 0 chown ${n0} 65534 65534 +for id in 0 65533; do + create_file dir ${n0}/${n1} ${id} ${id} + expect dir,${id},${id} lstat ${n0}/${n1} type,uid,gid + expect 0 -u 65534 -g 65534 rmdir ${n0}/${n1} + expect ENOENT lstat ${n0}/${n1} type +done # User doesn't own the sticky directory nor the directory to be removed. -expect 0 -u 65534 -g 65534 mkdir ${n0}/${n1} 0755 -expect "EACCES|EPERM" -u 65533 -g 65533 rmdir ${n0}/${n1} -expect 0 rmdir ${n0}/${n1} +for id in 0 65533; do + expect 0 chown ${n0} ${id} ${id} + create_file dir ${n0}/${n1} ${id} ${id} + expect dir,${id},${id} lstat ${n0}/${n1} type,uid,gid + expect "EACCES|EPERM" -u 65534 -g 65534 rmdir ${n0}/${n1} + expect dir,${id},${id} lstat ${n0}/${n1} type,uid,gid + expect 0 rmdir ${n0}/${n1} +done expect 0 rmdir ${n0} diff --git a/tools/regression/fstest/tests/unlink/11.t b/tools/regression/fstest/tests/unlink/11.t index 2542bf914469..b0d27f9a9518 100644 --- a/tools/regression/fstest/tests/unlink/11.t +++ b/tools/regression/fstest/tests/unlink/11.t @@ -6,7 +6,7 @@ desc="unlink returns EACCES or EPERM if the directory containing the file is mar dir=`dirname $0` . ${dir}/../misc.sh -echo "1..68" +echo "1..270" n0=`namegen` n1=`namegen` @@ -17,100 +17,45 @@ cdir=`pwd` cd ${n2} expect 0 mkdir ${n0} 0755 -expect 0 chown ${n0} 65534 65534 expect 0 chmod ${n0} 01777 +expect 0 chown ${n0} 65534 65534 -# User owns both: the sticky directory and the file to be removed. -expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the file to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644 -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the file to be removed. -expect 0 -u 65533 -g 65533 create ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the file to be removed. -expect 0 -u 65534 -g 65534 create ${n0}/${n1} 0644 -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -# User owns both: the sticky directory and the fifo to be removed. -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the fifo to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644 -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the fifo to be removed. -expect 0 -u 65533 -g 65533 mkfifo ${n0}/${n1} 0644 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the fifo to be removed. -expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n1} 0644 -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -# User owns both: the sticky directory and the block device to be removed. -expect 0 mknod ${n0}/${n1} b 0644 1 2 -expect 0 chown ${n0}/${n1} 65534 65534 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the block device to be removed, but doesn't own the sticky directory. -expect 0 mknod ${n0}/${n1} b 0644 1 2 -expect 0 chown ${n0}/${n1} 65533 65533 -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the block device to be removed. -expect 0 mknod ${n0}/${n1} b 0644 1 2 -expect 0 chown ${n0}/${n1} 65533 65533 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the block directory to be removed. -expect 0 mknod ${n0}/${n1} b 0644 1 2 -expect 0 chown ${n0}/${n1} 65534 65534 -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -# User owns both: the sticky directory and the character device to be removed. -expect 0 mknod ${n0}/${n1} c 0644 1 2 -expect 0 chown ${n0}/${n1} 65534 65534 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the character device to be removed, but doesn't own the sticky directory. -expect 0 mknod ${n0}/${n1} c 0644 1 2 -expect 0 chown ${n0}/${n1} 65533 65533 -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the character device to be removed. -expect 0 mknod ${n0}/${n1} c 0644 1 2 -expect 0 chown ${n0}/${n1} 65533 65533 -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the character directory to be removed. -expect 0 mknod ${n0}/${n1} c 0644 1 2 -expect 0 chown ${n0}/${n1} 65534 65534 -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -# User owns both: the sticky directory and the socket to be removed. -expect 0 -u 65534 -g 65534 bind ${n0}/${n1} -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the socket to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 bind ${n0}/${n1} -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the socket to be removed. -expect 0 -u 65533 -g 65533 bind ${n0}/${n1} -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the character directory to be removed. -expect 0 -u 65534 -g 65534 bind ${n0}/${n1} -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} - -# User owns both: the sticky directory and the symlink to be removed. -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1} -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User owns the symlink to be removed, but doesn't own the sticky directory. -expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1} -expect 0 -u 65533 -g 65533 unlink ${n0}/${n1} -# User owns the sticky directory, but doesn't own the symlink to be removed. -expect 0 -u 65533 -g 65533 symlink test ${n0}/${n1} -expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} -# User doesn't own the sticky directory nor the symlink to be removed. -expect 0 -u 65534 -g 65534 symlink test ${n0}/${n1} -expect "EACCES|EPERM" -u 65533 -g 65533 unlink ${n0}/${n1} -expect 0 unlink ${n0}/${n1} +for type in regular fifo block char socket symlink; do + # User owns both: the sticky directory and the file. + expect 0 chown ${n0} 65534 65534 + create_file ${type} ${n0}/${n1} 65534 65534 + expect ${type},65534,65534 lstat ${n0}/${n1} type,uid,gid + expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} + expect ENOENT lstat ${n0}/${n1} type + + # User owns the sticky directory, but doesn't own the file. + for id in 0 65533; do + expect 0 chown ${n0} 65534 65534 + create_file ${type} ${n0}/${n1} ${id} ${id} + expect ${type},${id},${id} lstat ${n0}/${n1} type,uid,gid + expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} + expect ENOENT lstat ${n0}/${n1} type + done + + # User owns the file, but doesn't own the sticky directory. + for id in 0 65533; do + expect 0 chown ${n0} ${id} ${id} + create_file ${type} ${n0}/${n1} 65534 65534 + expect ${type},65534,65534 lstat ${n0}/${n1} type,uid,gid + expect 0 -u 65534 -g 65534 unlink ${n0}/${n1} + expect ENOENT lstat ${n0}/${n1} type + done + + # User doesn't own the sticky directory nor the file. + for id in 0 65533; do + expect 0 chown ${n0} ${id} ${id} + create_file ${type} ${n0}/${n1} ${id} ${id} + expect ${type},${id},${id} lstat ${n0}/${n1} type,uid,gid + expect "EACCES|EPERM" -u 65534 -g 65534 unlink ${n0}/${n1} + expect ${type},${id},${id} lstat ${n0}/${n1} type,uid,gid + expect 0 unlink ${n0}/${n1} + done +done expect 0 rmdir ${n0} |