[PATCH 1/2] s3:tests: Add smbspool_argv_wrapper
Andrew Bartlett
abartlet at samba.org
Wed Sep 25 05:51:27 UTC 2019
On Tue, 2019-09-24 at 17:37 -0700, Bryan Mason via samba-technical
wrote:
> This patch, along with the next one, is intended to catch problems
> like https://bugzilla.samba.org/show_bug.cgi?id=14128 where CUPS puts
> a sanitized Device URI in argv[0]. This patch creates a utility to
> pass the Device URI in argv[0]; the next patch actually uses this
> utility to perform the test.
>
> Please review and comment. Thanks.
Thanks for the patches. Can you please either:
- submit them as a merge request to our gitlab repo
- attach them to a mail
Sadly samba-technical is set up in such a way that your patches have
been munged and credited to the mailing list, not yourself.
See also our contributing instructions (which need work) and copyright
policy:
https://wiki.samba.org/index.php/Contribute
https://www.samba.org/samba/devel/copyright-policy.html
Sorry!
Andrew Bartlett
> [PATCH 1/2] s3:tests: Add smbspool_argv_wrapper
>
> Before calling a backend like smbspool, CUPS will set argv[0] to the
> Device URI. smbspool_argv_wrapper can be used in testing to emulate
> CUPS-like behavior by setting argv[0] to the device URI before
> exec()ing smbspool.
>
> Signed-off-by: Bryan Mason <bmason at redhat.com>
> ---
> source3/script/tests/smbspool_argv_wrapper.c | 68 ++++++++++++++++++++
> source3/wscript_build | 4 ++
> 2 files changed, 72 insertions(+)
> create mode 100644 source3/script/tests/smbspool_argv_wrapper.c
>
> diff --git a/source3/script/tests/smbspool_argv_wrapper.c
> b/source3/script/tests/smbspool_argv_wrapper.c
> new file mode 100644
> index 00000000000..f4a1d0c762b
> --- /dev/null
> +++ b/source3/script/tests/smbspool_argv_wrapper.c
> @@ -0,0 +1,68 @@
> +/*
> + 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;
> +/*
> + * 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 */
> + execve(exec_path, new_argv, envp);
> +}
> diff --git a/source3/wscript_build b/source3/wscript_build
> index 6707b4bb146..fb58b85b4db 100644
> --- a/source3/wscript_build
> +++ b/source3/wscript_build
> @@ -1144,6 +1144,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='''
--
Andrew Bartlett
https://samba.org/~abartlet/
Authentication Developer, Samba Team https://samba.org
Samba Development and Support, Catalyst IT
https://catalyst.net.nz/services/samba
More information about the samba-technical
mailing list