The Samba-Bugzilla – Attachment 16761 Details for
Bug 14816
smbd built with ‘-DDISABLE_OPATH=1’ will hang opening FIFO file in the samba share.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
git-am fix for master.
bug-14816-master (text/plain), 5.49 KB, created by
Jeremy Allison
on 2021-09-03 02:18:17 UTC
(
hide
)
Description:
git-am fix for master.
Filename:
MIME Type:
Creator:
Jeremy Allison
Created:
2021-09-03 02:18:17 UTC
Size:
5.49 KB
patch
obsolete
>From cc66d08f383381086d0688bf0681ac51fb8fba11 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Thu, 2 Sep 2021 15:32:27 -0700 >Subject: [PATCH 1/2] s3: smbd: Add fifo test for the DISABLE_OPATH case. > >Currently we hang when trying to list a directory >containing a fifo when configured with DISABLE_OPATH. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14816 > >Signed-off-by: Jeremy Allison <jra@samba.org> >--- > selftest/skip.opath-required | 4 ++ > source3/script/tests/test_fifo.sh | 83 +++++++++++++++++++++++++++++++ > source3/selftest/tests.py | 3 ++ > 3 files changed, 90 insertions(+) > create mode 100755 source3/script/tests/test_fifo.sh > >diff --git a/selftest/skip.opath-required b/selftest/skip.opath-required >index 0faf0c4bd6c..c62d3ebd2e0 100644 >--- a/selftest/skip.opath-required >+++ b/selftest/skip.opath-required >@@ -7,3 +7,7 @@ > # These fail because become_root() doesn't work in make test > ^samba3.blackbox.dropbox.* > ^samba3.raw.samba3hide.* >+# This fails because of BUG: https://bugzilla.samba.org/show_bug.cgi?id=14816 >+# which causes the server to hang when trying to open a pathref fifo without O_PATH. >+# We need to add O_NONBLOCK to make this work. >+^samba3.blackbox.fifo >diff --git a/source3/script/tests/test_fifo.sh b/source3/script/tests/test_fifo.sh >new file mode 100755 >index 00000000000..11741dcc038 >--- /dev/null >+++ b/source3/script/tests/test_fifo.sh >@@ -0,0 +1,83 @@ >+#!/bin/sh >+# >+# Check smbclient can list a directory containing a fifo. >+# >+ >+if [ $# -lt 7 ]; then >+cat <<EOF >+Usage: $0 SERVER DOMAIN USERNAME PASSWORD PREFIX TARGET_ENV SMBCLIENT >+EOF >+exit 1; >+fi >+ >+SERVER=${1} >+DOMAIN=${2} >+USERNAME=${3} >+PASSWORD=${4} >+PREFIX=${5} >+TARGET_ENV=${6} >+SMBCLIENT=${7} >+shift 7 >+SMBCLIENT="$VALGRIND ${SMBCLIENT}" >+ADDARGS="$@" >+ >+incdir=`dirname $0`/../../../testprogs/blackbox >+. $incdir/subunit.sh >+ >+failed=0 >+ >+# Test that listing a share with a directory containing a fifo succeeds. >+# >+# BUG: https://bugzilla.samba.org/show_bug.cgi?id=14816 >+# >+test_fifo() >+{ >+ local fifo_dir_path="$PREFIX/$TARGET_ENV/share/fifodir" >+ local fifo_path="$fifo_dir_path/fifo_name" >+ >+ local tmpfile=$PREFIX/smbclient.in.$$ >+ >+ cat > $tmpfile <<EOF >+cd fifodir >+ls >+quit >+EOF >+ >+ # Create fifo directory. >+ mkdir -p $fifo_dir_path >+ # Create fifo underneath. >+ mkfifo $fifo_path >+ >+ local cmd='CLI_FORCE_INTERACTIVE=yes $SMBCLIENT //$SERVER/$1 -U$USERNAME%$PASSWORD $ADDARGS < $tmpfile 2>&1' >+ eval echo "$cmd" >+ out=`eval $cmd` >+ ret=$? >+ >+ # Remove fifo and containing dir. >+ rm $fifo_path >+ rmdir $fifo_dir_path >+ rm -f $tmpfile >+ >+ # Check for smbclient error. >+ if [ $ret != 0 ] ; then >+ echo "Failed accessing share containing dir with fifo $ret" >+ echo "$out" >+ return 1 >+ fi >+ >+ # Check for smbclient timeout (server hung). >+ echo "$out" | grep 'NT_STATUS_' >+ ret=$? >+ if [ $ret -eq 0 ] ; then >+ # Client was disconnected as server timed out. >+ echo "$out" >+ return 1 >+ fi >+ >+ return 0 >+} >+ >+testit "list directory containing a fifo" \ >+ test_fifo tmp || failed=`expr $failed + 1` >+ >+exit $failed >diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py >index 812114c2374..500ddddfc7d 100755 >--- a/source3/selftest/tests.py >+++ b/source3/selftest/tests.py >@@ -567,6 +567,9 @@ for env in ["fileserver"]: > '-u', '$USERNAME', '-p', '$PASSWORD', '-l', '$LOCAL_PATH/tarmode2', > '-d', 'smbclient_tar.SMB3', '-b', smbclient3, > '--subunit', '--', configuration, '-mSMB3']) >+ plantestsuite("samba3.blackbox.fifo", env, >+ [os.path.join(samba3srcdir, "script/tests/test_fifo.sh"), >+ '$SERVER', '$DOMAIN', 'gooduser', '$PASSWORD', '$PREFIX', env, smbclient3]) > > for env in ["fileserver:local"]: > plantestsuite("samba3.blackbox.net_usershare", env, [os.path.join(samba3srcdir, "script/tests/test_net_usershare.sh"), '$SERVER', '$SERVER_IP', '$USERNAME', '$PASSWORD', smbclient3]) >-- >2.30.2 > > >From 915a67acf9352b03a872ad3d31d2935cb136e755 Mon Sep 17 00:00:00 2001 >From: Jeremy Allison <jra@samba.org> >Date: Thu, 2 Sep 2021 14:40:53 -0700 >Subject: [PATCH 2/2] s3: smbd: Fix openat_pathref_fsp() to cope with FIFO's in > the filesystem. > >Remove skip test for the DISABLE_OPATH case. > >BUG: https://bugzilla.samba.org/show_bug.cgi?id=14816 > >Signed-off-by: Jeremy Allison <jra@samba.org> >--- > selftest/skip.opath-required | 4 ---- > source3/smbd/files.c | 4 ++++ > 2 files changed, 4 insertions(+), 4 deletions(-) > >diff --git a/selftest/skip.opath-required b/selftest/skip.opath-required >index c62d3ebd2e0..0faf0c4bd6c 100644 >--- a/selftest/skip.opath-required >+++ b/selftest/skip.opath-required >@@ -7,7 +7,3 @@ > # These fail because become_root() doesn't work in make test > ^samba3.blackbox.dropbox.* > ^samba3.raw.samba3hide.* >-# This fails because of BUG: https://bugzilla.samba.org/show_bug.cgi?id=14816 >-# which causes the server to hang when trying to open a pathref fifo without O_PATH. >-# We need to add O_NONBLOCK to make this work. >-^samba3.blackbox.fifo >diff --git a/source3/smbd/files.c b/source3/smbd/files.c >index 413706fee0c..a2269d8da65 100644 >--- a/source3/smbd/files.c >+++ b/source3/smbd/files.c >@@ -503,6 +503,10 @@ NTSTATUS openat_pathref_fsp(const struct files_struct *dirfsp, > } > } > >+ if (S_ISFIFO(smb_fname->st.st_ex_mode)) { >+ open_flags |= O_NONBLOCK; >+ } >+ > status = fd_openat(dirfsp, smb_fname, fsp, open_flags, 0); > if (!NT_STATUS_IS_OK(status)) { > if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND) || >-- >2.30.2 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 14816
:
16760
| 16761 |
16775