s3: Test for CVE-2017-2619 regression with "follow symlinks = no" - part 2
authorJeremy Allison <jra@samba.org>
Tue, 28 Mar 2017 05:10:29 +0000 (22:10 -0700)
committerRalph Boehme <slow@samba.org>
Tue, 28 Mar 2017 15:05:27 +0000 (17:05 +0200)
Add tests for regular access.

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

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
Autobuild-User(master): Ralph Böhme <slow@samba.org>
Autobuild-Date(master): Tue Mar 28 17:05:27 CEST 2017 on sn-devel-144

source3/script/tests/test_smbclient_s3.sh

index 330ceead09ce13daab6a5ed527a4911ed2e9f0a0..9bff883f63f1cab420720d1aa1a67dc3b10940f3 100755 (executable)
@@ -1103,14 +1103,22 @@ test_nosymlinks()
     slink_name="$LOCAL_PATH/nosymlinks/source"
     slink_target="$LOCAL_PATH/nosymlinks/target"
     mkdir_target="$LOCAL_PATH/nosymlinks/a"
+    dir1="$LOCAL_PATH/nosymlinks/foo"
+    dir2="$LOCAL_PATH/nosymlinks/foo/bar"
+    get_target="$LOCAL_PATH/nosymlinks/foo/bar/testfile"
 
     rm -f $slink_target
     rm -f $slink_name
     rm -rf $mkdir_target
+    rm -rf $dir1
 
     touch $slink_target
     ln -s $slink_target $slink_name
 
+    mkdir $dir1
+    mkdir $dir2
+    touch $get_target
+
 # Getting a file through a symlink name should fail.
     tmpfile=$PREFIX/smbclient_interactive_prompt_commands
     cat > $tmpfile <<EOF
@@ -1165,6 +1173,35 @@ EOF
        echo "failed - NT_STATUS_XXXX doing mkdir a; mkdir a\\b on \\nosymlinks"
        false
     fi
+
+# Ensure regular file/directory access also works.
+    cat > $tmpfile <<EOF
+cd foo\\bar
+ls
+get testfile -
+quit
+EOF
+    cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT "$@" -U$USERNAME%$PASSWORD //$SERVER/nosymlinks -I $SERVER_IP $ADDARGS < $tmpfile 2>&1'
+    eval echo "$cmd"
+    out=`eval $cmd`
+    ret=$?
+    rm -f $tmpfile
+
+    if [ $ret -ne 0 ] ; then
+       echo "$out"
+       echo "failed accessing nosymlinks with error $ret"
+       false
+       return
+    fi
+
+    echo "$out" | grep 'NT_STATUS'
+    ret=$?
+    if [ $ret -eq 0 ] ; then
+       echo "$out"
+       echo "failed - NT_STATUS_XXXX doing cd foo\\bar; get testfile on \\nosymlinks"
+       false
+       return
+    fi
 }
 
 LOGDIR_PREFIX=test_smbclient_s3