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 <bma...@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 <bma...@redhat.com> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org> Autobuild-Date(master): Wed Oct 16 10:55:04 UTC 2019 on sn-devel-184 commit 7259197bf716f8b81dea74beefe6ee3b1239f172 Author: Isaac Boukris <ibouk...@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 <ibouk...@gmail.com> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@samba.org> commit d473f1e38c2822746030516269b4d70032cf9b2e Author: Isaac Boukris <ibouk...@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 <ibouk...@gmail.com> Reviewed-by: Andreas Schneider <a...@samba.org> Reviewed-by: Alexander Bokovoy <a...@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