1
0
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:
Volker Lendecke 2023-10-26 16:16:29 +02:00 committed by Jeremy Allison
parent 03af117693
commit cc1657c585
2 changed files with 40 additions and 0 deletions

View File

@ -0,0 +1 @@
^samba3.blackbox.smbclient_s3.*.follow\ local\ symlinks.*

View File

@ -1492,6 +1492,17 @@ EOF
return return
fi 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 ? # Can we cd into the symlink name and ls ?
tmpfile=$PREFIX/smbclient_interactive_prompt_commands tmpfile=$PREFIX/smbclient_interactive_prompt_commands
cat >$tmpfile <<EOF cat >$tmpfile <<EOF
@ -1521,6 +1532,34 @@ EOF
return return
fi 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 # CLEANUP
rm -f $local_slink_name rm -f $local_slink_name