1 #!/bin/ksh -p
2 #
3 # CDDL HEADER START
4 #
5 # The contents of this file are subject to the terms of the
6 # Common Development and Distribution License (the "License").
7 # You may not use this file except in compliance with the License.
8 #
9 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 # or http://www.opensolaris.org/os/licensing.
11 # See the License for the specific language governing permissions
12 # and limitations under the License.
13 #
14 # When distributing Covered Code, include this CDDL HEADER in each
15 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 # If applicable, add the following below this CDDL HEADER, with the
17 # fields enclosed by brackets "[]" replaced with your own identifying
18 # information: Portions Copyright [yyyy] [name of copyright owner]
19 #
20 # CDDL HEADER END
21 #
22
23 #
24 # Copyright 2010 Sun Microsystems, Inc. All rights reserved.
25 #
26
27 #
28 # ID: xattr_005
29 #
30 # DESCRIPTION:
31 # Verify special . and .. dirs work as expected for xattrs
32 #
33 # STRATEGY:
34 # 1. Create a file and an xattr on that file
35 # 2. List the . directory, verifying the output
36 # 3. Verify we're unable to list the ../ directory
37 #
38
39 . $STF_SUITE/include/libtest.ksh
40
41 tc_id=xattr_005
42 tc_desc="Verify special . and .. dirs work as expected for xattrs"
43 print_test_case $tc_id - $tc_desc
44 CDIR=$(pwd)
45
46 if [[ $STC_CIFS_CLIENT_DEBUG == 1 ]] || \
47 [[ *:${STC_CIFS_CLIENT_DEBUG}:* == *:$tc_id:* ]]; then
48 set -x
49 fi
50
51 server=$(server_name) || return
52
53 testdir_init $TDIR
54 smbmount_clean $TMNT
55 smbmount_init $TMNT
56
57 cmd="mount -F smbfs //$TUSER:$TPASS@$server/public $TMNT"
58 cti_execute -i '' FAIL $cmd
59 if [[ $? != 0 ]]; then
60 cti_fail "FAIL: smbmount can't mount the public share unexpectedly"
61 return
62 else
63 cti_report "PASS: smbmount can mount the public share as expected"
64 fi
65
66 smbmount_getmntopts $TMNT |grep /xattr/ >/dev/null
67 if [[ $? != 0 ]]; then
68 smbmount_clean $TMNT
69 cti_unsupported "UNSUPPORTED (no xattr in this mount)"
70 return
71 fi
72
73 # create a file, and an xattr on it
74
75 cti_execute_cmd "touch $TMNT/test_file"
76 create_xattr $TMNT/test_file passwd /etc/passwd
77
78 # listing the directory . should show one file
79
80 OUTPUT=$(runat $TMNT/test_file ls |grep -v SUNWattr_)
81 if [ "$OUTPUT" != "passwd" ]
82 then
83 cti_fail "Listing the . directory doesn't show \"passwd\" as expected."
84 fi
85 # list the directory . long form
86
87 cti_execute_cmd "runat $TMNT/test_file ls -a . |grep -v SUNWattr_"
88 cp cti_stdout output
89
90 # create a file that should be the same as the command above
91 create_expected_output expected-output . .. passwd
92 # compare them
93
94 cti_execute_cmd "diff output expected-output"
95 if [[ $? != 0 ]]; then
96 cti_fail "FAIL: special . dirs do not work as expected for xattrs"
97 cti_reportfile output
98 return
99 else
100 cti_report "PASS: special . dirs work as expected for xattrs"
101 fi
102
103 # list the directory .. expecting one file
104
105 OUTPUT=$(runat $TMNT/test_file ls ..)
106 if [ $? != 0 ]
107 then
108 cti_fail "runat test file ls .. failed with return val =$? unexpectedly"
109 return
110 fi
111
112 if [ "$OUTPUT" != ".." ]
113 then
114 cti_fail "Listing the .. directory doesn't show \"..\" as expected"
115 return
116 fi
117
118 # verify we can't list ../
119
120 cti_execute_cmd "runat $TMNT/test_file ls ../"
121 if [[ $? == 0 ]]; then
122 cti_fail "FAIL: can be able to list the ../ directory unexpectedly"
123 return
124 else
125 cti_report "PASS: unable to list the ../ directory as expected"
126 fi
127
128 cti_execute_cmd "rm output expected-output"
129 cti_execute_cmd "rm -rf $TDIR/*"
130
131 smbmount_clean $TMNT
132 cti_pass "$tc_id: PASS"