mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
More tests.
This commit is contained in:
parent
5ef8fb65f9
commit
5b2bae575b
2 changed files with 60 additions and 98 deletions
|
|
@ -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}
|
||||
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
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 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 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 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 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 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}
|
||||
# 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}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue