The branch, master has been updated
       via  e11ee75 samba-tool: Rename Samba4 to Samba AD
       via  23009b9 smbtorture:spoolss: Add a 32bit test for copy_from_directory
       via  86798a0 smbtorture:spoolss: Rename the copy_from_directory test for 
64bit
       via  5b15c7e s3:printing: Change to GUID dir if we deal with 
COPY_FROM_DIRECTORY
      from  d04efe5 vfs_fruit: Fix the 32-bit build

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


- Log -----------------------------------------------------------------
commit e11ee75d9f24dbeee7004994621270bfbf32359d
Author: Andreas Schneider <a...@samba.org>
Date:   Fri May 5 11:21:03 2017 +0200

    samba-tool: Rename Samba4 to Samba AD
    
    We should stop talking about Samba4 and use the terms Samba AD and
    Samba FS.
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Guenther Deschner <g...@samba.org>
    
    Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org>
    Autobuild-Date(master): Fri May  5 15:51:54 CEST 2017 on sn-devel-144

commit 23009b97bf2f831811c4690141db7355537659d0
Author: Andreas Schneider <a...@samba.org>
Date:   Fri May 5 11:12:02 2017 +0200

    smbtorture:spoolss: Add a 32bit test for copy_from_directory
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12761
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Guenther Deschner <g...@samba.org>

commit 86798a0fa16b4cc89c35d698bffe0b436fc4eb2e
Author: Andreas Schneider <a...@samba.org>
Date:   Fri May 5 11:11:25 2017 +0200

    smbtorture:spoolss: Rename the copy_from_directory test for 64bit
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12761
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Guenther Deschner <g...@samba.org>

commit 5b15c7e8908697b157d2593b7caa9be760594a05
Author: Andreas Schneider <a...@samba.org>
Date:   Thu May 4 17:48:42 2017 +0200

    s3:printing: Change to GUID dir if we deal with COPY_FROM_DIRECTORY
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=12761
    
    Signed-off-by: Andreas Schneider <a...@samba.org>
    Reviewed-by: Guenther Deschner <g...@samba.org>

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

Summary of changes:
 python/samba/provision/__init__.py |  4 +--
 python/samba/tests/provision.py    |  2 +-
 source3/printing/nt_printing.c     | 51 ++++++++++++++++++++++++++------------
 source4/torture/rpc/spoolss.c      | 35 ++++++++++++++++++++------
 4 files changed, 66 insertions(+), 26 deletions(-)


Changeset truncated at 500 lines:

diff --git a/python/samba/provision/__init__.py 
b/python/samba/provision/__init__.py
index b001c54..d61f26e 100644
--- a/python/samba/provision/__init__.py
+++ b/python/samba/provision/__init__.py
@@ -1,5 +1,5 @@
 # Unix SMB/CIFS implementation.
-# backend code for provisioning a Samba4 server
+# backend code for provisioning a Samba AD server
 
 # Copyright (C) Jelmer Vernooij <jel...@samba.org> 2007-2012
 # Copyright (C) Andrew Bartlett <abart...@samba.org> 2008-2009
@@ -474,7 +474,7 @@ class ProvisionResult(object):
     def report_logger(self, logger):
         """Report this provision result to a logger."""
         logger.info(
-            "Once the above files are installed, your Samba4 server will "
+            "Once the above files are installed, your Samba AD server will "
             "be ready to use")
         if self.adminpass_generated:
             logger.info("Admin password:        %s", self.adminpass)
diff --git a/python/samba/tests/provision.py b/python/samba/tests/provision.py
index 91c66d5..11b0135 100644
--- a/python/samba/tests/provision.py
+++ b/python/samba/tests/provision.py
@@ -171,7 +171,7 @@ class ProvisionResultTests(TestCase):
         result = self.base_result()
         entries = self.report_logger(result)
         self.assertEquals(entries, [
-            ('INFO', 'Once the above files are installed, your Samba4 server '
+            ('INFO', 'Once the above files are installed, your Samba AD server 
'
                 'will be ready to use'),
             ('INFO', 'Server Role:           domain controller'),
             ('INFO', 'Hostname:              hostnaam'),
diff --git a/source3/printing/nt_printing.c b/source3/printing/nt_printing.c
index 1bd6506..f877039 100644
--- a/source3/printing/nt_printing.c
+++ b/source3/printing/nt_printing.c
@@ -666,16 +666,18 @@ Determine the correct cVersion associated with an 
architecture and driver
 static uint32_t get_correct_cversion(struct auth_session_info *session_info,
                                   const char *architecture,
                                   const char *driverpath_in,
+                                  const char *driver_directory,
                                   WERROR *perr)
 {
        int cversion = -1;
        NTSTATUS          nt_status;
        struct smb_filename *smb_fname = NULL;
-       char *driverpath = NULL;
        files_struct      *fsp = NULL;
        connection_struct *conn = NULL;
        char *oldcwd;
        char *printdollar = NULL;
+       char *printdollar_path = NULL;
+       char *working_dir = NULL;
        int printdollar_snum;
 
        *perr = WERR_INVALID_PARAMETER;
@@ -704,12 +706,33 @@ static uint32_t get_correct_cversion(struct 
auth_session_info *session_info,
                return -1;
        }
 
+       printdollar_path = lp_path(talloc_tos(), printdollar_snum);
+       if (printdollar_path == NULL) {
+               *perr = WERR_NOT_ENOUGH_MEMORY;
+               return -1;
+       }
+
+       working_dir = talloc_asprintf(talloc_tos(),
+                                     "%s/%s",
+                                     printdollar_path,
+                                     architecture);
+       /*
+        * If the driver has been uploaded into a temorpary driver
+        * directory, switch to the driver directory.
+        */
+       if (driver_directory != NULL) {
+               working_dir = talloc_asprintf(talloc_tos(), "%s/%s/%s",
+                                             printdollar_path,
+                                             architecture,
+                                             driver_directory);
+       }
+
        nt_status = create_conn_struct_cwd(talloc_tos(),
                                           server_event_context(),
                                           server_messaging_context(),
                                           &conn,
                                           printdollar_snum,
-                                          lp_path(talloc_tos(), 
printdollar_snum),
+                                          working_dir,
                                           session_info, &oldcwd);
        if (!NT_STATUS_IS_OK(nt_status)) {
                DEBUG(0,("get_correct_cversion: create_conn_struct "
@@ -731,18 +754,11 @@ static uint32_t get_correct_cversion(struct 
auth_session_info *session_info,
                goto error_free_conn;
        }
 
-       /* Open the driver file (Portable Executable format) and determine the
-        * deriver the cversion. */
-       driverpath = talloc_asprintf(talloc_tos(),
-                                       "%s/%s",
-                                       architecture,
-                                       driverpath_in);
-       if (!driverpath) {
-               *perr = WERR_NOT_ENOUGH_MEMORY;
-               goto error_exit;
-       }
-
-       nt_status = driver_unix_convert(conn, driverpath, &smb_fname);
+       /*
+        * We switch to the directory where the driver files are located,
+        * so only work on the file names
+        */
+       nt_status = driver_unix_convert(conn, driverpath_in, &smb_fname);
        if (!NT_STATUS_IS_OK(nt_status)) {
                *perr = ntstatus_to_werror(nt_status);
                goto error_exit;
@@ -956,8 +972,11 @@ static WERROR clean_up_driver_struct_level(TALLOC_CTX 
*mem_ctx,
         *      NT2K: cversion=3
         */
 
-       *version = get_correct_cversion(session_info, short_architecture,
-                                       *driver_path, &err);
+       *version = get_correct_cversion(session_info,
+                                       short_architecture,
+                                       *driver_path,
+                                       *driver_directory,
+                                       &err);
        if (*version == -1) {
                return err;
        }
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 67822a1..7ab7c60 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -11137,7 +11137,8 @@ static bool test_multiple_drivers(struct 
torture_context *tctx,
 }
 
 static bool test_driver_copy_from_directory(struct torture_context *tctx,
-                                           struct dcerpc_pipe *p)
+                                           struct dcerpc_pipe *p,
+                                           const char *architecture)
 {
        struct torture_driver_context *d;
        struct spoolss_StringArray *a;
@@ -11153,12 +11154,16 @@ static bool test_driver_copy_from_directory(struct 
torture_context *tctx,
        d = talloc_zero(tctx, struct torture_driver_context);
        torture_assert_not_null(tctx, d, "ENOMEM");
 
-       d->local.environment            =
-               talloc_asprintf(d, SPOOLSS_ARCHITECTURE_x64);
+       d->local.environment            = talloc_strdup(d, architecture);
        torture_assert_not_null_goto(tctx, d->local.environment, ok, done, 
"ENOMEM");
 
-       d->local.driver_directory       =
-               talloc_asprintf(d, "/usr/share/cups/drivers/x64");
+       if (strequal(architecture, SPOOLSS_ARCHITECTURE_x64)) {
+               d->local.driver_directory =
+                       talloc_strdup(d, "/usr/share/cups/drivers/x64");
+       } else {
+               d->local.driver_directory =
+                       talloc_strdup(d, "/usr/share/cups/drivers/i386");
+       }
        torture_assert_not_null_goto(tctx, d->local.driver_directory, ok, done, 
"ENOMEM");
 
        d->remote.driver_upload_directory = GUID_string2(d, &guid);
@@ -11236,6 +11241,18 @@ done:
        return ok;
 }
 
+static bool test_driver_copy_from_directory_64(struct torture_context *tctx,
+                                              struct dcerpc_pipe *p)
+{
+       return test_driver_copy_from_directory(tctx, p, 
SPOOLSS_ARCHITECTURE_x64);
+}
+
+static bool test_driver_copy_from_directory_32(struct torture_context *tctx,
+                                              struct dcerpc_pipe *p)
+{
+       return test_driver_copy_from_directory(tctx, p, 
SPOOLSS_ARCHITECTURE_NT_X86);
+}
+
 static bool test_del_driver_all_files(struct torture_context *tctx,
                                      struct dcerpc_pipe *p)
 {
@@ -11433,8 +11450,12 @@ struct torture_suite 
*torture_rpc_spoolss_driver(TALLOC_CTX *mem_ctx)
        torture_rpc_tcase_add_test(tcase, "multiple_drivers", 
test_multiple_drivers);
 
        torture_rpc_tcase_add_test(tcase,
-                                  "test_driver_copy_from_directory",
-                                  test_driver_copy_from_directory);
+                                  "test_driver_copy_from_directory_64",
+                                  test_driver_copy_from_directory_64);
+
+       torture_rpc_tcase_add_test(tcase,
+                                  "test_driver_copy_from_directory_32",
+                                  test_driver_copy_from_directory_32);
 
        torture_rpc_tcase_add_test(tcase, "del_driver_all_files", 
test_del_driver_all_files);
 


-- 
Samba Shared Repository

Reply via email to