[SCM] Samba Shared Repository - branch master updated

Andreas Schneider asn at samba.org
Wed Oct 16 10:56:02 UTC 2019


The branch, master has been updated
       via  f0abf62adcf s3:tests: Add smbspool test for CUPS-like "sanitized" Device URI in argv[0]
       via  7259197bf71 s3:libsmb: Link libsmb against pthread
       via  d473f1e38c2 nsswitch: Link stress-nss-libwbclient against pthread
      from  b01169ff321 s3: VFS: Complete the removal of SMB_VFS_CHOWN()

https://git.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit f0abf62adcf4bda6dd7b36ce74695f8ac8ec79f6
Author: Bryan Mason <bmason at redhat.com>
Date:   Wed Sep 25 18:49:56 2019 -0700

    s3:tests: Add smbspool test for CUPS-like "sanitized" Device URI in argv[0]
    
    Before calling a backend like smbspool, CUPS will set argv[0] to the
    "sanitized" Device URI (the Device URI with username/password
    information removed).  These changes are intended to catch problems
    with smbspool that may be created by this behavior (like
    https://bugzilla.samba.org/show_bug.cgi?id=14128).
    
    source3/script/tests/smbspool_argv_wrapper.c: added to emulate
    CUPS-like behavior by setting argv[0] to the device URI before
    exec()ing smbspool.
    
    source3/script/tests/test_smbspool.sh: updated to use
    smbspool_argv_wrapper to test the CUPS-like behavior described above.
    
    Signed-off-by: Bryan Mason <bmason at redhat.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>
    
    Autobuild-User(master): Andreas Schneider <asn at cryptomilk.org>
    Autobuild-Date(master): Wed Oct 16 10:55:04 UTC 2019 on sn-devel-184

commit 7259197bf716f8b81dea74beefe6ee3b1239f172
Author: Isaac Boukris <iboukris at gmail.com>
Date:   Tue Oct 15 17:01:48 2019 +0300

    s3:libsmb: Link libsmb against pthread
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14140
    
    Signed-off-by: Isaac Boukris <iboukris at gmail.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

commit d473f1e38c2822746030516269b4d70032cf9b2e
Author: Isaac Boukris <iboukris at gmail.com>
Date:   Tue Oct 15 13:52:42 2019 +0300

    nsswitch: Link stress-nss-libwbclient against pthread
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=14140
    
    Signed-off-by: Isaac Boukris <iboukris at gmail.com>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    Reviewed-by: Alexander Bokovoy <ab at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 nsswitch/wscript_build                       |  2 +-
 source3/libsmb/wscript                       |  1 +
 source3/script/tests/smbspool_argv_wrapper.c | 72 ++++++++++++++++++++++++++++
 source3/script/tests/test_smbspool.sh        | 23 +++++++++
 source3/wscript_build                        |  4 ++
 5 files changed, 101 insertions(+), 1 deletion(-)
 create mode 100644 source3/script/tests/smbspool_argv_wrapper.c


Changeset truncated at 500 lines:

diff --git a/nsswitch/wscript_build b/nsswitch/wscript_build
index 6acc4a19b9b..861ed2f23bf 100644
--- a/nsswitch/wscript_build
+++ b/nsswitch/wscript_build
@@ -20,7 +20,7 @@ bld.SAMBA_BINARY('nsstest',
 if bld.CONFIG_SET('HAVE_PTHREAD'):
     bld.SAMBA_BINARY('stress-nss-libwbclient',
 		     source='stress-nss-libwbclient.c',
-		     deps='wbclient',
+		     deps='wbclient pthread',
 		     install=False
 		     )
 
diff --git a/source3/libsmb/wscript b/source3/libsmb/wscript
index d9e933e9e9f..febff9df7fc 100644
--- a/source3/libsmb/wscript
+++ b/source3/libsmb/wscript
@@ -16,6 +16,7 @@ def build(bld):
                               libsmb_xattr.c
                               libsmb_setget.c''',
                        public_deps='''
+                                   pthread
                                    talloc
                                    smbconf
                                    libsmb
diff --git a/source3/script/tests/smbspool_argv_wrapper.c b/source3/script/tests/smbspool_argv_wrapper.c
new file mode 100644
index 00000000000..7db788109d9
--- /dev/null
+++ b/source3/script/tests/smbspool_argv_wrapper.c
@@ -0,0 +1,72 @@
+/*
+   Wrapper for smbspool to test Device URI in argv[0]
+
+   Copyright (C) Bryan Mason 2019
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <unistd.h>
+#include <stdlib.h>
+#include <errno.h>
+
+/*
+ * Before calling a backend like smbspool, CUPS will set argv[0] to
+ * the Device URI.  This program wraps a program like smbspool and
+ * sets argv[0] to the device URI before exec()ing the acutal backend
+ * program.
+ */
+
+int main(int argc, char *argv[], char *envp[])
+{
+	char **new_argv;
+	char *exec_path;
+	int a;
+	int rv;
+/*
+ * Expected parameters:
+ *
+ * smbspool_argv_wrapper smbspool uri job user title copies opts file(s)
+ * argv[0]	       1	2   3   4    5     6      7    8
+ *
+ */
+	/* Allocate memory for the new arguments (exit on failure). */
+	new_argv = calloc(argc, sizeof(char *));
+	if (new_argv == 0) {
+		exit(ENOMEM);
+	}
+
+	/* Save the path to the smbspool executable */
+	exec_path = argv[1];
+
+	/*
+	 * Shift the rest of the args so smbspool is called with:
+	 *
+	 * uri     job user title copies opts file(s)
+	 * argv[0] 1   2    3     4      5    6
+	 */
+
+	for (a = 2; a < argc-1; a++) {
+		new_argv[a-2] = argv[a];
+	}
+
+	/* Execute smbspool with new arguments */
+	rv = execve(exec_path, new_argv, envp);
+	if (rv == -1) {
+		exit(errno);
+	}
+
+	/* Avoid compiler error/warning */
+	return 0;
+}
diff --git a/source3/script/tests/test_smbspool.sh b/source3/script/tests/test_smbspool.sh
index f28c0909334..7ba03f01fc7 100755
--- a/source3/script/tests/test_smbspool.sh
+++ b/source3/script/tests/test_smbspool.sh
@@ -22,6 +22,7 @@ incdir=`dirname $0`/../../../testprogs/blackbox
 samba_bindir="$BINDIR"
 samba_vlp="$samba_bindir/vlp"
 samba_smbspool="$samba_bindir/smbspool"
+samba_argv_wrapper="$samba_bindir/smbspool_argv_wrapper"
 samba_smbtorture3="$samba_bindir/smbtorture3"
 samba_smbspool_krb5="$samba_bindir/smbspool_krb5_wrapper"
 
@@ -224,6 +225,28 @@ testit "smbspool print DEVICE_URI example.ps via stdin" \
 	failed=$(expr $failed + 1)
 unset DEVICE_URI
 
+testit "vlp verify example.ps" \
+	test_vlp_verify \
+	|| failed=$(expr $failed + 1)
+
+DEVICE_URI="smb://$USERNAME:$PASSWORD@$SERVER_IP/print1"
+export DEVICE_URI
+testit "smbspool print sanitized Device URI in argv0 example.ps" \
+	$smbspool_argv_wrapper $samba_smbspool smb://$SERVER_IP/print1 200 $USERNAME "Testprint" 1 "options" $SRCDIR/testdata/printing/example.ps || \
+	failed=$(expr $failed + 1)
+unset DEVICE_URI
+
+testit "vlp verify example.ps" \
+	test_vlp_verify \
+	|| failed=$(expr $failed + 1)
+
+DEVICE_URI="smb://$USERNAME:$PASSWORD@$SERVER_IP/print1"
+export DEVICE_URI
+testit "smbspool print sanitized Device URI in argv0 example.ps via stdin" \
+	$smbspool_argv_wrapper $samba_smbspool smb://$SERVER_IP/print1 200 $USERNAME "Testprint" 1 "options" < $SRCDIR/testdata/printing/example.ps || \
+	failed=$(expr $failed + 1)
+unset DEVICE_URI
+
 testit "vlp verify example.ps" \
 	test_vlp_verify \
 	|| failed=$(expr $failed + 1)
diff --git a/source3/wscript_build b/source3/wscript_build
index 829636a77c5..94ea02ba61e 100644
--- a/source3/wscript_build
+++ b/source3/wscript_build
@@ -1151,6 +1151,10 @@ bld.SAMBA3_BINARY('smbspool_krb5_wrapper',
                  install_path='${LIBEXECDIR}/samba',
                  enabled=bld.CONFIG_SET('HAVE_CUPS'))
 
+bld.SAMBA3_BINARY('smbspool_argv_wrapper',
+		  source='script/tests/smbspool_argv_wrapper.c',
+		  install=False)
+
 bld.SAMBA3_BINARY('locktest2',
                  source='torture/locktest2.c',
                  deps='''


-- 
Samba Shared Repository



More information about the samba-cvs mailing list