]> git.proxmox.com Git - mirror_zfs.git/commitdiff
ZTS: Fix incorrect use of libtest in user_run by xattr_003_neg
authorRyan Moeller <ryan@iXsystems.com>
Mon, 9 Nov 2020 22:57:00 +0000 (17:57 -0500)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Sat, 13 Mar 2021 00:17:30 +0000 (16:17 -0800)
You can't use user_run to eval ksh functions defined in libtest unless
you include libtest in the user shell.

Fix xattr_003_neg by:
* include libtest in the user shell
* *then* run get_xattr
* assert this fails
* use variables for filenames so they don't change in the user's shell
* don't log the contents of /etc/passwd
* cleanup all byproducts

Reviewed-by: John Kennedy <john.kennedy@delphix.com>
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Ryan Moeller <ryan@iXsystems.com>
Closes #11185

tests/zfs-tests/tests/functional/xattr/xattr_003_neg.ksh

index a3b25ff66266636029f4e5bb7b8b625051536ab0..ba27d043b7fe01ac5365524307dbe427927d1fc0 100755 (executable)
 #      4. Check that we're unable to write an xattr as a non-root user
 #
 
-function cleanup {
-
-       log_must rm $TESTDIR/myfile.$$
-
+function cleanup
+{
+       rm -f $testfile $tempfile
 }
 
 log_assert "read/write xattr on a file with no permissions fails"
 log_onexit cleanup
 
-log_must touch $TESTDIR/myfile.$$
-create_xattr $TESTDIR/myfile.$$ passwd /etc/passwd
+typeset testfile=$TESTDIR/testfile.$$
+typeset tempfile=/tmp/tempfile.$$
+
+log_must touch $testfile
+create_xattr $testfile passwd /etc/passwd
 
-log_must chmod 000 $TESTDIR/myfile.$$
+log_must chmod 000 $testfile
 if is_illumos; then
-       log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cat passwd"
-       log_mustnot su $ZFS_USER -c "runat $TESTDIR/myfile.$$ cp /etc/passwd ."
+       log_mustnot su $ZFS_USER -c "runat $testfile cat passwd"
+       log_mustnot su $ZFS_USER -c "runat $testfile cp /etc/passwd ."
 else
-       user_run $ZFS_USER eval \
-           "get_xattr passwd $TESTDIR/myfile.$$ >/tmp/passwd.$$"
-       log_mustnot diff /etc/passwd /tmp/passwd.$$
-       log_must rm /tmp/passwd.$$
+       log_mustnot user_run $ZFS_USER "
+. $STF_SUITE/include/libtest.shlib
+get_xattr passwd $testfile >$tempfile
+"
+       log_mustnot diff -q /etc/passwd $tempfile
+       log_must rm $tempfile
 
-       user_run $ZFS_USER eval \
-           "set_xattr_stdin passwd $TESTDIR/myfile.$$ </etc/group"
-       log_must chmod 644 $TESTDIR/myfile.$$
-       get_xattr passwd $TESTDIR/myfile.$$ >/tmp/passwd.$$
-       log_must diff /etc/passwd /tmp/passwd.$$
-       log_must rm /tmp/passwd.$$
+       log_mustnot user_run $ZFS_USER "
+. $STF_SUITE/include/libtest.shlib
+set_xattr_stdin passwd $testfile </etc/group
+"
+       log_must chmod 644 $testfile
+       get_xattr passwd $testfile >$tempfile
+       log_must diff -q /etc/passwd $tempfile
+       log_must rm $tempfile
 fi
 
 log_pass "read/write xattr on a file with no permissions fails"