The branch, master has been updated
       via  c90069b s4:torture: The teardown function should just return
       via  bd44e43 s4:torture: Delete printer before we remove the driver
       via  731fe59 s4:torture: Use a different driver name for add_driver tests
       via  f449177 s3:script: Untaint user supplied data in modprinter.pl
       via  f9c0a8e s3:spoolss: Set timeout values to the one which Windows 
uses by default
      from  3a719dc dynconfig: Use INSTALL_DIR to create directories

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


- Log -----------------------------------------------------------------
commit c90069b26424752b15922de9cb796c431d2f3e08
Author: Andreas Schneider <[email protected]>
Date:   Tue Aug 8 12:05:24 2017 +0200

    s4:torture: The teardown function should just return
    
    The teardown functions should not return on error but finish cleaning
    up!
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12984
    
    Signed-off-by: Andreas Schneider <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>
    
    Autobuild-User(master): Andreas Schneider <[email protected]>
    Autobuild-Date(master): Thu Aug 24 13:23:22 CEST 2017 on sn-devel-144

commit bd44e435fa6a93d47a470f8ee95763a95eba4b5d
Author: Andreas Schneider <[email protected]>
Date:   Tue Aug 8 10:40:19 2017 +0200

    s4:torture: Delete printer before we remove the driver
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12984
    
    Signed-off-by: Andreas Schneider <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>

commit 731fe596ac0999d54aae03ce4175356c56b3c94b
Author: Andreas Schneider <[email protected]>
Date:   Tue Aug 8 11:25:48 2017 +0200

    s4:torture: Use a different driver name for add_driver tests
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12984
    
    Signed-off-by: Andreas Schneider <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>

commit f44917743512fa40f2833629dfd781f7c691ce62
Author: Andreas Schneider <[email protected]>
Date:   Tue Aug 8 08:40:34 2017 +0200

    s3:script: Untaint user supplied data in modprinter.pl
    
    spoolss_SetPrinter fails because of the error produced by modprinter.pl.
    
    Perl error:
    Insecure dependency in open while running setgid at modprinter.pl line 76.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12950
    
    Signed-off-by: Andreas Schneider <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>

commit f9c0a8e3e0dc340d2cc71196d1ad600b6359c41c
Author: Andreas Schneider <[email protected]>
Date:   Fri Nov 18 15:06:22 2016 +0100

    s3:spoolss: Set timeout values to the one which Windows uses by default
    
    Signed-off-by: Andreas Schneider <[email protected]>
    Reviewed-by: Guenther Deschner <[email protected]>

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

Summary of changes:
 source3/rpc_server/spoolss/srv_spoolss_nt.c |  9 +++--
 source3/script/tests/printing/modprinter.pl | 15 +++++--
 source4/torture/rpc/spoolss.c               | 63 +++++++++++++++++++----------
 3 files changed, 59 insertions(+), 28 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/spoolss/srv_spoolss_nt.c 
b/source3/rpc_server/spoolss/srv_spoolss_nt.c
index 9d99e74..663c623 100644
--- a/source3/rpc_server/spoolss/srv_spoolss_nt.c
+++ b/source3/rpc_server/spoolss/srv_spoolss_nt.c
@@ -4177,9 +4177,12 @@ static WERROR construct_printer_info5(TALLOC_CTX 
*mem_ctx,
 
        r->attributes   = info2->attributes;
 
-       /* these two are not used by NT+ according to MSDN */
-       r->device_not_selected_timeout          = 0x0;  /* have seen 0x3a98 */
-       r->transmission_retry_timeout           = 0x0;  /* have seen 0xafc8 */
+       /*
+        * These two are not used by NT+ according to MSDN. However the values
+        * we saw on Windows Server 2012 and 2016 are always set to the 0xafc8.
+        */
+       r->device_not_selected_timeout          = 0xafc8; /* 45 sec */
+       r->transmission_retry_timeout           = 0xafc8; /* 45 sec */
 
        return WERR_OK;
 }
diff --git a/source3/script/tests/printing/modprinter.pl 
b/source3/script/tests/printing/modprinter.pl
index 9e5e329..ec1ebcd 100755
--- a/source3/script/tests/printing/modprinter.pl
+++ b/source3/script/tests/printing/modprinter.pl
@@ -67,7 +67,14 @@ if (!defined($share_name)) {
        die "share name not defined";
 }
 
-my $tmp = $opt_smb_conf.$$;
+my $smb_conf_file = $opt_smb_conf;
+if ($smb_conf_file =~ /^(.*)$/) {
+       $smb_conf_file = $1; # untaint file name
+} else {
+       die "Invalid file name $smb_conf_file";
+}
+
+my $tmp = $smb_conf_file.$$;
 
 my $section = undef;
 my $within_section = 0;
@@ -75,7 +82,7 @@ my $found_section = 0;
 
 open(CONFIGFILE_NEW, "+>$tmp") || die "Unable top open conf file $tmp";
 
-open (CONFIGFILE, "+<$opt_smb_conf") || die "Unable to open config file 
$opt_smb_conf";
+open (CONFIGFILE, "+<$smb_conf_file") || die "Unable to open config file 
$smb_conf_file";
 while (<CONFIGFILE>) {
        my $line = $_;
        chomp($_);
@@ -123,7 +130,9 @@ close (CONFIGFILE_NEW);
 if ($opt_delete && ($found_section == 0)) {
        die "share $share_name not found";
 }
-system("cp", "$tmp", "$opt_smb_conf");
+
+$ENV{'PATH'} = '/bin:/usr/bin'; # untaint PATH
+system("cp", "$tmp", "$smb_conf_file");
 unlink $tmp;
 
 exit 0;
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 89e9a13..d4f6969 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -47,6 +47,7 @@
 #define TORTURE_WELLKNOWN_PRINTER_EX   "torture_wkn_printer_ex"
 #define TORTURE_PRINTER_EX             "torture_printer_ex"
 #define TORTURE_DRIVER                 "torture_driver"
+#define TORTURE_DRIVER_ADD             "torture_driver_add"
 #define TORTURE_DRIVER_EX              "torture_driver_ex"
 #define TORTURE_DRIVER_ADOBE           "torture_driver_adobe"
 #define TORTURE_DRIVER_EX_ADOBE                "torture_driver_ex_adobe"
@@ -8575,6 +8576,7 @@ static bool 
torture_rpc_spoolss_printer_teardown_common(struct torture_context *
        struct dcerpc_pipe *p = t->spoolss_pipe;
        struct dcerpc_binding_handle *b = NULL;
        const char *server_name_slash;
+       bool ok = true;
 
        if (p == NULL) {
                return true;
@@ -8583,38 +8585,55 @@ static bool 
torture_rpc_spoolss_printer_teardown_common(struct torture_context *
 
        server_name_slash = talloc_asprintf(tctx, "\\\\%s", 
dcerpc_server_name(p));
 
-       if (t->added_driver) {
-               torture_assert(tctx,
-                       remove_printer_driver(tctx, dcerpc_server_name(p), 
&t->driver),
-                       "failed to remove printer driver");
-
-               torture_assert(tctx,
-                       test_DeletePrinterDriverEx_exp(tctx, b,
-                                                      server_name_slash,
-                                                      
t->driver.info8.driver_name,
-                                                      
t->driver.info8.architecture,
-                                                      DPD_DELETE_ALL_FILES,
-                                                      t->driver.info8.version,
-                                                      WERR_OK),
-                       "failed to delete printer driver via spoolss");
-       }
-
        if (!t->wellknown) {
                const char *printer_name = t->info2.printername;
 
-               torture_assert(tctx,
+               torture_assert_goto(tctx,
                        test_DeletePrinter(tctx, b, &t->handle),
+                       ok,
+                       remove_driver,
                        "failed to delete printer");
 
-               torture_assert(tctx,
+               torture_assert_goto(tctx,
                        test_EnumPrinters_findname(tctx, b, PRINTER_ENUM_LOCAL, 
1,
                                                   printer_name, &found),
+                       ok,
+                       remove_driver,
                        "failed to enumerate printers");
 
-               torture_assert(tctx, !found, "deleted printer still there");
+               torture_assert_goto(tctx,
+                       !found,
+                       ok,
+                       remove_driver,
+                       "deleted printer still there");
        }
 
-       return true;
+
+remove_driver:
+       if (t->added_driver) {
+               ok = remove_printer_driver(tctx,
+                                          dcerpc_server_name(p),
+                                          &t->driver);
+               if (!ok) {
+                       torture_warning(tctx,
+                                       "failed to remove printer driver\n");
+               }
+
+               ok = test_DeletePrinterDriverEx_exp(tctx, b,
+                                                   server_name_slash,
+                                                   t->driver.info8.driver_name,
+                                                   
t->driver.info8.architecture,
+                                                   DPD_DELETE_ALL_FILES,
+                                                   t->driver.info8.version,
+                                                   WERR_OK);
+               if (!ok) {
+                       torture_warning(tctx,
+                                       "failed to delete printer driver via "
+                                       "spoolss\n");
+               }
+       }
+
+       return ok;
 }
 
 static bool torture_rpc_spoolss_printer_teardown(struct torture_context *tctx, 
void *data)
@@ -10932,7 +10951,7 @@ static bool test_add_driver_64(struct torture_context 
*tctx,
        d->local.driver_directory       = talloc_strdup(d, 
"/usr/share/cups/drivers/x64");
 
        d->info8.version                = SPOOLSS_DRIVER_VERSION_200X;
-       d->info8.driver_name            = TORTURE_DRIVER;
+       d->info8.driver_name            = TORTURE_DRIVER_ADD;
        d->info8.architecture           = d->local.environment;
        d->info8.driver_path            = talloc_strdup(d, "pscript5.dll");
        d->info8.data_file              = talloc_strdup(d, "cups6.ppd");
@@ -10953,7 +10972,7 @@ static bool test_add_driver_32(struct torture_context 
*tctx,
        d->local.driver_directory       = talloc_strdup(d, 
"/usr/share/cups/drivers/i386");
 
        d->info8.version                = SPOOLSS_DRIVER_VERSION_200X;
-       d->info8.driver_name            = TORTURE_DRIVER;
+       d->info8.driver_name            = TORTURE_DRIVER_ADD;
        d->info8.architecture           = d->local.environment;
        d->info8.driver_path            = talloc_strdup(d, "pscript5.dll");
        d->info8.data_file              = talloc_strdup(d, "cups6.ppd");


-- 
Samba Shared Repository

Reply via email to