mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
tests: Get a file through an absolute symlink within a subdirectory
This shows that read_symlink_reparse() is broken when trying to replace an absolute with a relative filename within a share. read_symlink_reparse() is used only in openat_pathref_fsp_nosymlink() so far to chase symlinks for non-lcomp path components. Chasing lcomp symlinks is done through non_widelink_open(), which gets it right. Bug: https://bugzilla.samba.org/show_bug.cgi?id=15505 Signed-off-by: Volker Lendecke <vl@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
parent
03af117693
commit
cc1657c585
1
selftest/knownfail.d/bug-15505
Normal file
1
selftest/knownfail.d/bug-15505
Normal file
@ -0,0 +1 @@
|
||||
^samba3.blackbox.smbclient_s3.*.follow\ local\ symlinks.*
|
@ -1492,6 +1492,17 @@ EOF
|
||||
return
|
||||
fi
|
||||
|
||||
# Create a file to be accessed behind the symlink
|
||||
touch $local_slink_target_dir/x
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo "$out"
|
||||
echo "failed - unable to create file"
|
||||
ls -la $local_test_dir
|
||||
false
|
||||
return
|
||||
fi
|
||||
|
||||
# Can we cd into the symlink name and ls ?
|
||||
tmpfile=$PREFIX/smbclient_interactive_prompt_commands
|
||||
cat >$tmpfile <<EOF
|
||||
@ -1521,6 +1532,34 @@ EOF
|
||||
return
|
||||
fi
|
||||
|
||||
# Can we get the test file behind the symlink'ed dir?
|
||||
tmpfile=$PREFIX/smbclient_interactive_prompt_commands
|
||||
cat >$tmpfile <<EOF
|
||||
get $share_test_dir\\sym_name\\x -
|
||||
quit
|
||||
EOF
|
||||
cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/local_symlinks -I $SERVER_IP $LOCAL_ADDARGS < $tmpfile 2>&1'
|
||||
eval echo "$cmd"
|
||||
out=$(eval $cmd)
|
||||
ret=$?
|
||||
rm -f $tmpfile
|
||||
|
||||
if [ $ret -ne 0 ]; then
|
||||
echo "$out"
|
||||
echo "failed accessing local_symlinks with error $ret"
|
||||
false
|
||||
return
|
||||
fi
|
||||
|
||||
echo "$out" | grep 'NT_STATUS_'
|
||||
ret=$?
|
||||
if [ $ret -eq 0 ]; then
|
||||
echo "$out"
|
||||
echo "failed - got an NT_STATUS error"
|
||||
false
|
||||
return
|
||||
fi
|
||||
|
||||
# CLEANUP
|
||||
rm -f $local_slink_name
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user