summaryrefslogtreecommitdiffstats
path: root/tools/regression/fstest/tests/rename/10.t
diff options
context:
space:
mode:
Diffstat (limited to 'tools/regression/fstest/tests/rename/10.t')
-rw-r--r--tools/regression/fstest/tests/rename/10.t251
1 files changed, 38 insertions, 213 deletions
diff --git a/tools/regression/fstest/tests/rename/10.t b/tools/regression/fstest/tests/rename/10.t
index 381e73b..3b48d1f 100644
--- a/tools/regression/fstest/tests/rename/10.t
+++ b/tools/regression/fstest/tests/rename/10.t
@@ -6,7 +6,7 @@ desc="rename returns EACCES or EPERM if the file pointed at by the 'to' argument
dir=`dirname $0`
. ${dir}/../misc.sh
-echo "1..1903"
+echo "1..2099"
n0=`namegen`
n1=`namegen`
@@ -24,144 +24,39 @@ expect 0 chown ${n0} 65534 65534
expect 0 mkdir ${n1} 0755
expect 0 chmod ${n1} 01777
-create_file() {
- case "${1}" in
- regular)
- expect 0 -u 65534 -g 65534 create ${n0}/${n2} 0644
- ;;
- fifo)
- expect 0 -u 65534 -g 65534 mkfifo ${n0}/${n2} 0644
- ;;
- block)
- expect 0 mknod ${n0}/${n2} b 0644 1 2
- expect 0 chown ${n0}/${n2} 65534 65534
- ;;
- char)
- expect 0 mknod ${n0}/${n2} c 0644 1 2
- expect 0 chown ${n0}/${n2} 65534 65534
- ;;
- socket)
- expect 0 -u 65534 -g 65534 bind ${n0}/${n2}
- ;;
- symlink)
- expect 0 -u 65534 -g 65534 symlink test ${n0}/${n2}
- ;;
- esac
-}
-
for type in regular fifo block char socket symlink; do
# User owns both: the sticky directory and the destination file.
expect 0 chown ${n1} 65534 65534
- create_file ${type}
+ create_file ${type} ${n0}/${n2} 65534 65534
inode=`${fstest} lstat ${n0}/${n2} inode`
- expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 mknod ${n1}/${n3} b 0644 1 2
- expect 0 chown ${n1}/${n3} 65534 65534
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 mknod ${n1}/${n3} c 0644 1 2
- expect 0 chown ${n1}/${n3} 65534 65534
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 -u 65534 -g 65534 bind ${n1}/${n3}
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 unlink ${n0}/${n2}
-
- # User owns the sticky directory, but doesn't own the destination file.
- for id in 0 65533; do
- expect 0 chown ${n1} 65534 65534
- create_file ${type}
- inode=`${fstest} lstat ${n0}/${n2} inode`
-
- expect 0 -u ${id} -g ${id} create ${n1}/${n3} 0644
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 -u ${id} -g ${id} mkfifo ${n1}/${n3} 0644
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 mknod ${n1}/${n3} b 0644 1 2
- expect 0 chown ${n1}/${n3} ${id} ${id}
+ for type in regular fifo block char socket symlink; do
+ create_file ${type} ${n1}/${n3} 65534 65534
expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
expect ENOENT lstat ${n0}/${n2} inode
expect ${inode} lstat ${n1}/${n3} inode
expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
expect ${inode} lstat ${n0}/${n2} inode
expect ENOENT lstat ${n1}/${n3} inode
+ done
- expect 0 mknod ${n1}/${n3} c 0644 1 2
- expect 0 chown ${n1}/${n3} ${id} ${id}
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
+ expect 0 unlink ${n0}/${n2}
- expect 0 -u ${id} -g ${id} bind ${n1}/${n3}
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
+ # User owns the sticky directory, but doesn't own the destination file.
+ for id in 0 65533; do
+ expect 0 chown ${n1} 65534 65534
+ create_file ${type} ${n0}/${n2} 65534 65534
+ inode=`${fstest} lstat ${n0}/${n2} inode`
- expect 0 -u ${id} -g ${id} symlink test ${n1}/${n3}
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
+ for type in regular fifo block char socket symlink; do
+ create_file ${type} ${n1}/${n3} ${id} ${id}
+ expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+ expect ENOENT lstat ${n0}/${n2} inode
+ expect ${inode} lstat ${n1}/${n3} inode
+ expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+ expect ${inode} lstat ${n0}/${n2} inode
+ expect ENOENT lstat ${n1}/${n3} inode
+ done
expect 0 unlink ${n0}/${n2}
done
@@ -169,58 +64,18 @@ for type in regular fifo block char socket symlink; do
# User owns the destination file, but doesn't own the sticky directory.
for id in 0 65533; do
expect 0 chown ${n1} ${id} ${id}
- create_file ${type}
+ create_file ${type} ${n0}/${n2} 65534 65534
inode=`${fstest} lstat ${n0}/${n2} inode`
- expect 0 -u 65534 -g 65534 create ${n1}/${n3} 0644
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 -u 65534 -g 65534 mkfifo ${n1}/${n3} 0644
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 mknod ${n1}/${n3} b 0644 1 2
- expect 0 chown ${n1}/${n3} 65534 65534
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 mknod ${n1}/${n3} c 0644 1 2
- expect 0 chown ${n1}/${n3} 65534 65534
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 -u 65534 -g 65534 bind ${n1}/${n3}
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
-
- expect 0 -u 65534 -g 65534 symlink test ${n1}/${n3}
- expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ENOENT lstat ${n0}/${n2} inode
- expect ${inode} lstat ${n1}/${n3} inode
- expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ENOENT lstat ${n1}/${n3} inode
+ for type in regular fifo block char socket symlink; do
+ create_file ${type} ${n1}/${n3} 65534 65534
+ expect 0 -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+ expect ENOENT lstat ${n0}/${n2} inode
+ expect ${inode} lstat ${n1}/${n3} inode
+ expect 0 -u 65534 -g 65534 rename ${n1}/${n3} ${n0}/${n2}
+ expect ${inode} lstat ${n0}/${n2} inode
+ expect ENOENT lstat ${n1}/${n3} inode
+ done
expect 0 unlink ${n0}/${n2}
done
@@ -228,46 +83,16 @@ for type in regular fifo block char socket symlink; do
# User doesn't own the sticky directory nor the destination file.
for id in 0 65533; do
expect 0 chown ${n1} ${id} ${id}
- create_file ${type}
+ create_file ${type} ${n0}/${n2} 65534 65534
inode=`${fstest} lstat ${n0}/${n2} inode`
- expect 0 -u ${id} -g ${id} create ${n1}/${n3} 0644
- expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ${id},${id} lstat ${n1}/${n3} uid,gid
- expect 0 unlink ${n1}/${n3}
-
- expect 0 -u ${id} -g ${id} mkfifo ${n1}/${n3} 0644
- expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ${id},${id} lstat ${n1}/${n3} uid,gid
- expect 0 unlink ${n1}/${n3}
-
- expect 0 mknod ${n1}/${n3} b 0644 1 2
- expect 0 chown ${n1}/${n3} ${id} ${id}
- expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ${id},${id} lstat ${n1}/${n3} uid,gid
- expect 0 unlink ${n1}/${n3}
-
- expect 0 mknod ${n1}/${n3} c 0644 1 2
- expect 0 chown ${n1}/${n3} ${id} ${id}
- expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ${id},${id} lstat ${n1}/${n3} uid,gid
- expect 0 unlink ${n1}/${n3}
-
- expect 0 -u ${id} -g ${id} bind ${n1}/${n3}
- expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ${id},${id} lstat ${n1}/${n3} uid,gid
- expect 0 unlink ${n1}/${n3}
-
- expect 0 -u ${id} -g ${id} symlink test ${n1}/${n3}
- expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
- expect ${inode} lstat ${n0}/${n2} inode
- expect ${id},${id} lstat ${n1}/${n3} uid,gid
- expect 0 unlink ${n1}/${n3}
+ for type in regular fifo block char socket symlink; do
+ create_file ${type} ${n1}/${n3} ${id} ${id}
+ expect "EACCES|EPERM" -u 65534 -g 65534 rename ${n0}/${n2} ${n1}/${n3}
+ expect ${inode} lstat ${n0}/${n2} inode
+ expect ${id},${id} lstat ${n1}/${n3} uid,gid
+ expect 0 unlink ${n1}/${n3}
+ done
expect 0 unlink ${n0}/${n2}
done
OpenPOWER on IntegriCloud