]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbclient: Test we can rename with a name containing.
authorJeremy Allison <jra@samba.org>
Mon, 23 Oct 2017 22:40:04 +0000 (15:40 -0700)
committerKarolin Seeger <kseeger@samba.org>
Thu, 2 Nov 2017 12:01:21 +0000 (13:01 +0100)
Samba always allowed this anyway, but it's a good place
to ensure we don't regress.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13093

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Autobuild-User(master): Jeremy Allison <jra@samba.org>
Autobuild-Date(master): Tue Oct 24 23:32:58 CEST 2017 on sn-devel-144

(cherry picked from commit 7abe56ccfa4aba75c5e166a7bd0bb8141c3f258b)

source3/script/tests/test_smbclient_s3.sh

index ce1cb089ea9e1247d9a1693ed70daa486bc580e6..fe1c7ba8f6708ea8022cc02cbe8b5cdeab56a337 100755 (executable)
@@ -1277,6 +1277,50 @@ done
 
 LOGDIR=$(mktemp -d ${PREFIX}/${LOGDIR_PREFIX}_XXXXXX)
 
+# Test smbclient renames with pathnames containing '..'
+test_rename_dotdot()
+{
+    tmpfile=$PREFIX/smbclient_interactive_prompt_commands
+
+cat > $tmpfile <<EOF
+deltree dotdot_test
+mkdir dotdot_test
+cd dotdot_test
+mkdir dir1
+mkdir dir2
+cd dir1
+put ${SMBCLIENT} README
+rename README ..\\dir2\\README
+cd ..
+cd dir2
+allinfo README
+cd \\
+deltree dotdot_test
+quit
+EOF
+    cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/tmp -I $SERVER_IP $ADDARGS < $tmpfile 2>&1'
+    eval echo "$cmd"
+    out=`eval $cmd`
+    ret=$?
+
+    if [ $ret != 0 ] ; then
+       echo "$out"
+       echo "failed rename_dotdot test with output $ret"
+       false
+       return
+    fi
+
+    # We are allowed to get NT_STATUS_NO_SUCH_FILE listing \dotdot_test
+    # as the top level directory should not exist, but no other errors.
+
+    error_str=`echo $out | grep NT_STATUS | grep -v "NT_STATUS_NO_SUCH_FILE listing .dotdot_test"`
+    if [ "$error_str" != "" ]; then
+        echo "failed - unexpected NT_STATUS error in $out"
+        false
+        return
+    fi
+}
+
 
 testit "smbclient -L $SERVER_IP" $SMBCLIENT -L $SERVER_IP -N -p 139 || failed=`expr $failed + 1`
 testit "smbclient -L $SERVER -I $SERVER_IP" $SMBCLIENT -L $SERVER -I $SERVER_IP -N -p 139 -c quit || failed=`expr $failed + 1`
@@ -1373,6 +1417,10 @@ testit "follow local symlinks" \
     test_local_symlinks || \
     failed=`expr $failed + 1`
 
+testit "rename_dotdot" \
+    test_rename_dotdot || \
+    failed=`expr $failed + 1`
+
 testit "rm -rf $LOGDIR" \
     rm -rf $LOGDIR || \
     failed=`expr $failed + 1`