[SCM] Samba Shared Repository - branch master updated

Jeremy Allison jra at samba.org
Sat Sep 8 02:36:02 UTC 2018


The branch, master has been updated
       via  b1bf9c5 spoolss-iremotewinspool-tests: Use more recent client OS version
       via  2b97074 iremotewinspool-tests: Add client os build number validation test
       via  4fc0602 iremotewinspool-tests: Allow modification of OS client version information
       via  b8279f6 s3-rpcclient: Use spoolss_init_spoolss_UserLevel1 in winspool cmds
       via  1da7708 s3-rpc_client: Advertise Windows 7 client info
       via  a2aa7d6 s3-spoolss: Make spoolss client os_major,os_minor and os_build configurable.
      from  70169d4 wafsamba: Fix 'make -j<jobs>'

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


- Log -----------------------------------------------------------------
commit b1bf9c5d850457dce1d5a38bdb800f0280c54d68
Author: Justin Stephenson <jstephen at redhat.com>
Date:   Fri Aug 31 15:28:36 2018 -0400

    spoolss-iremotewinspool-tests: Use more recent client OS version
    
    Set torture test client info build, major, and minor
    version numbers to Windows 7 and Windows Server 2008 R2 values
    
     buildnum: 7007
     major: 6
     minor: 1
    
    Build number taken from
     [MS-RPRN] <168> Section 2.2.3.10.1
    
    Major/Minor numbers taken from
     https://docs.microsoft.com/en-us/windows/desktop/sysinfo/operating-system-version
    
    Signed-off-by: Justin Stephenson <jstephen at redhat.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>
    
    Autobuild-User(master): Jeremy Allison <jra at samba.org>
    Autobuild-Date(master): Sat Sep  8 04:35:56 CEST 2018 on sn-devel-144

commit 2b9707413f541231ac8e14f4bfba24f66253c082
Author: Justin Stephenson <jstephen at redhat.com>
Date:   Wed Aug 22 13:23:18 2018 -0400

    iremotewinspool-tests: Add client os build number validation test
    
    Add test validating the AsyncOpenPrinter result based on the provided
    client info build number
    
    Signed-off-by: Justin Stephenson <jstephen at redhat.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 4fc0602d975277287ef5257929dff49d21b05adc
Author: Justin Stephenson <jstephen at redhat.com>
Date:   Wed Aug 15 11:10:21 2018 -0400

    iremotewinspool-tests: Allow modification of OS client version information
    
    Add test_get_client_info() function to set and, or modify the client OS
    version values advertised in the iremotewinspool torture tests.
    
    The OS build numbers are used from the table in:
    
      [MS-RPRN] <168> Section 2.2.3.10.1
    
    Signed-off-by: Justin Stephenson <jstephen at redhat.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit b8279f6525b806d8f91aa8ce016bd528fff917f4
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 31 18:22:04 2018 +0200

    s3-rpcclient: Use spoolss_init_spoolss_UserLevel1 in winspool cmds
    
    Use spoolss initialization function to set client version information for
    iremotewinspool printer operations
    
    Signed-off-by: Guenther Deschner <gd at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit 1da770848753c172d0c790911b97dbe9c3ccee06
Author: Justin Stephenson <jstephen at redhat.com>
Date:   Fri Aug 31 13:28:58 2018 -0400

    s3-rpc_client: Advertise Windows 7 client info
    
    Client printing operations currently fail against Windows
    Server 2016 with Access Denied if a client os build number
    lower than 6000 is advertised. Increase the default build number,
    major, and minor versions to values associated with client
    OS versoins Windows 7 and Windows Server 2008 R2.
    
    The build number value specifically needs to be increased to
    allow these operations to succeed.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13597
    
    Signed-off-by: Justin Stephenson <jstephen at redhat.com>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

commit a2aa7d6d65351a887b438d57ff509aaa05a28251
Author: Günther Deschner <gd at samba.org>
Date:   Fri Aug 31 17:36:19 2018 +0200

    s3-spoolss: Make spoolss client os_major,os_minor and os_build configurable.
    
    Similar to spoolss server options, make the client advertised OS version
    values configurable to allow overriding the defaults provided to the print server.
    
    BUG: https://bugzilla.samba.org/show_bug.cgi?id=13597
    
    Signed-off-by: Guenther Deschner <gd at samba.org>
    Reviewed-by: Jeremy Allison <jra at samba.org>
    Reviewed-by: Andreas Schneider <asn at samba.org>

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

Summary of changes:
 docs-xml/smbdotconf/printing/spoolssosversion.xml |  39 ++++++
 source3/rpc_client/cli_spoolss.c                  |  29 ++---
 source3/rpc_client/init_spoolss.c                 |  31 +++++
 source3/rpc_client/init_spoolss.h                 |   3 +
 source3/rpcclient/cmd_iremotewinspool.c           |  16 ++-
 source4/torture/rpc/iremotewinspool.c             | 151 ++++++++++++++++++++--
 source4/torture/rpc/spoolss_access.c              |   7 +-
 7 files changed, 236 insertions(+), 40 deletions(-)


Changeset truncated at 500 lines:

diff --git a/docs-xml/smbdotconf/printing/spoolssosversion.xml b/docs-xml/smbdotconf/printing/spoolssosversion.xml
index 0ef4489..1b57b69 100644
--- a/docs-xml/smbdotconf/printing/spoolssosversion.xml
+++ b/docs-xml/smbdotconf/printing/spoolssosversion.xml
@@ -39,3 +39,42 @@
 <value type="default">2195</value>
 <value type="example">7601</value>
 </samba:parameter>
+
+<samba:parameter name="spoolss_client: os_major"
+                 context="G"
+                 type="integer"
+                 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>Windows might require a new os version number. This option allows
+		to modify the build number. The complete default version number is:
+		6.1.7007 (Windows 7 and Windows Server 2008 R2).
+	</para>
+</description>
+<value type="default">6</value>
+</samba:parameter>
+
+<samba:parameter name="spoolss_client: os_minor"
+		 context="G"
+		 type="integer"
+		 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>Windows might require a new os version number. This option allows
+		to modify the build number. The complete default version number is:
+		6.1.7007 (Windows 7 and Windows Server 2008 R2).
+	</para>
+</description>
+<value type="default">1</value>
+</samba:parameter>
+
+<samba:parameter name="spoolss_client: os_build"
+		 context="G"
+		 type="integer"
+		 xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
+<description>
+	<para>Windows might require a new os version number. This option allows
+		to modify the build number. The complete default version number is:
+		6.1.7007 (Windows 7 and Windows Server 2008 R2).
+	</para>
+</description>
+<value type="default">7007</value>
+</samba:parameter>
diff --git a/source3/rpc_client/cli_spoolss.c b/source3/rpc_client/cli_spoolss.c
index 7f6ed8e..36ca806 100644
--- a/source3/rpc_client/cli_spoolss.c
+++ b/source3/rpc_client/cli_spoolss.c
@@ -28,6 +28,7 @@
 #include "rpc_client/cli_spoolss.h"
 #include "auth/gensec/gensec.h"
 #include "auth/credentials/credentials.h"
+#include "rpc_client/init_spoolss.h"
 
 /**********************************************************************
  convencience wrapper around rpccli_spoolss_OpenPrinterEx
@@ -49,14 +50,12 @@ WERROR rpccli_spoolss_openprinter_ex(struct rpc_pipe_client *cli,
 
 	ZERO_STRUCT(devmode_ctr);
 
-	level1.size	= 28;
-	level1.client	= talloc_asprintf(mem_ctx, "\\\\%s", lp_netbios_name());
-	W_ERROR_HAVE_NO_MEMORY(level1.client);
-	level1.user	= cli_credentials_get_username(creds);
-	level1.build	= 1381;
-	level1.major	= 2;
-	level1.minor	= 0;
-	level1.processor = 0;
+	werror = spoolss_init_spoolss_UserLevel1(mem_ctx,
+						 cli_credentials_get_username(creds),
+						 &level1);
+	if (!W_ERROR_IS_OK(werror)) {
+		return werror;
+	}
 
 	userlevel_ctr.level = 1;
 	userlevel_ctr.user_info.level1 = &level1;
@@ -229,14 +228,12 @@ WERROR rpccli_spoolss_addprinterex(struct rpc_pipe_client *cli,
 	ZERO_STRUCT(devmode_ctr);
 	ZERO_STRUCT(secdesc_ctr);
 
-	level1.size		= 28;
-	level1.build		= 1381;
-	level1.major		= 2;
-	level1.minor		= 0;
-	level1.processor	= 0;
-	level1.client		= talloc_asprintf(mem_ctx, "\\\\%s", lp_netbios_name());
-	W_ERROR_HAVE_NO_MEMORY(level1.client);
-	level1.user	        = cli_credentials_get_username(creds);
+	result = spoolss_init_spoolss_UserLevel1(mem_ctx,
+						 cli_credentials_get_username(creds),
+						 &level1);
+	if (!W_ERROR_IS_OK(result)) {
+		return result;
+	}
 
 	userlevel_ctr.level = 1;
 	userlevel_ctr.user_info.level1 = &level1;
diff --git a/source3/rpc_client/init_spoolss.c b/source3/rpc_client/init_spoolss.c
index 9a4dab6..c341b82 100644
--- a/source3/rpc_client/init_spoolss.c
+++ b/source3/rpc_client/init_spoolss.c
@@ -446,3 +446,34 @@ const char *spoolss_get_short_filesys_environment(const char *environment)
 		return NULL;
 	}
 }
+
+/* Windows 7 and Windows Server 2008 R2 */
+#define GLOBAL_SPOOLSS_CLIENT_OS_MAJOR_DEFAULT 6
+#define GLOBAL_SPOOLSS_CLIENT_OS_MINOR_DEFAULT 1
+#define GLOBAL_SPOOLSS_CLIENT_OS_BUILD_DEFAULT 7007
+
+WERROR spoolss_init_spoolss_UserLevel1(TALLOC_CTX *mem_ctx,
+				       const char *username,
+				       struct spoolss_UserLevel1 *r)
+{
+	ZERO_STRUCTP(r);
+
+	r->size		= 28;
+	r->client	= talloc_asprintf(mem_ctx, "\\\\%s", lp_netbios_name());
+	W_ERROR_HAVE_NO_MEMORY(r->client);
+	r->user		= talloc_strdup(mem_ctx, username);
+	W_ERROR_HAVE_NO_MEMORY(r->user);
+	r->processor	= 0;
+
+	r->major	= lp_parm_int(GLOBAL_SECTION_SNUM,
+				      "spoolss_client", "os_major",
+				      GLOBAL_SPOOLSS_CLIENT_OS_MAJOR_DEFAULT);
+	r->minor	= lp_parm_int(GLOBAL_SECTION_SNUM,
+				      "spoolss_client", "os_minor",
+				      GLOBAL_SPOOLSS_CLIENT_OS_MINOR_DEFAULT);
+	r->build	= lp_parm_int(GLOBAL_SECTION_SNUM,
+				      "spoolss_client", "os_build",
+				      GLOBAL_SPOOLSS_CLIENT_OS_BUILD_DEFAULT);
+
+	return WERR_OK;
+}
diff --git a/source3/rpc_client/init_spoolss.h b/source3/rpc_client/init_spoolss.h
index 376eaef..062e37b 100644
--- a/source3/rpc_client/init_spoolss.h
+++ b/source3/rpc_client/init_spoolss.h
@@ -48,5 +48,8 @@ WERROR spoolss_create_default_devmode(TALLOC_CTX *mem_ctx,
 WERROR spoolss_create_default_secdesc(TALLOC_CTX *mem_ctx,
 				      struct spoolss_security_descriptor **secdesc);
 const char *spoolss_get_short_filesys_environment(const char *environment);
+WERROR spoolss_init_spoolss_UserLevel1(TALLOC_CTX *mem_ctx,
+				       const char *username,
+				       struct spoolss_UserLevel1 *r);
 
 #endif /* _RPC_CLIENT_INIT_SPOOLSS_H_ */
diff --git a/source3/rpcclient/cmd_iremotewinspool.c b/source3/rpcclient/cmd_iremotewinspool.c
index c6148ec..7f0cecf 100644
--- a/source3/rpcclient/cmd_iremotewinspool.c
+++ b/source3/rpcclient/cmd_iremotewinspool.c
@@ -24,6 +24,7 @@
 #include "libsmb/libsmb.h"
 #include "auth/gensec/gensec.h"
 #include "auth/credentials/credentials.h"
+#include "rpc_client/init_spoolss.h"
 
 /****************************************************************************
 ****************************************************************************/
@@ -33,6 +34,7 @@ static WERROR cmd_iremotewinspool_async_open_printer(struct rpc_pipe_client *cli
 						     int argc, const char **argv)
 {
 	NTSTATUS status;
+	WERROR werror;
 	struct policy_handle hnd;
 	struct spoolss_DevmodeContainer devmode_ctr;
 	struct spoolss_UserLevelCtr client_info_ctr;
@@ -59,13 +61,13 @@ static WERROR cmd_iremotewinspool_async_open_printer(struct rpc_pipe_client *cli
 
 	ZERO_STRUCT(devmode_ctr);
 
-	level1.size	= 40;
-	level1.client	= talloc_asprintf(mem_ctx, "\\\\%s", lp_netbios_name());
-	W_ERROR_HAVE_NO_MEMORY(level1.client);
-	level1.user	= cli_credentials_get_username(creds);
-	level1.build	= 1381;
-	level1.major	= 3;
-	level1.minor	= 0;
+        werror = spoolss_init_spoolss_UserLevel1(mem_ctx,
+						 cli_credentials_get_username(creds),
+						 &level1);
+	if (!W_ERROR_IS_OK(werror)) {
+		return werror;
+	}
+
 	level1.processor = PROCESSOR_ARCHITECTURE_AMD64;
 
 	client_info_ctr.level = 1;
diff --git a/source4/torture/rpc/iremotewinspool.c b/source4/torture/rpc/iremotewinspool.c
index d419e9c..b4dbe71 100644
--- a/source4/torture/rpc/iremotewinspool.c
+++ b/source4/torture/rpc/iremotewinspool.c
@@ -33,31 +33,77 @@ struct test_iremotewinspool_context {
 	const char *environment;
 };
 
+enum client_os_version
+{
+	WIN_2000,
+	WIN_VISTA,
+	WIN_SERVER_2008,
+	WIN_7,
+	WIN_SERVER_2008R2,
+	WIN_8,
+	WIN_SERVER_2012,
+	WIN_10,
+	WIN_SERVER_2016
+};
+
+static struct spoolss_UserLevel1 test_get_client_info(struct torture_context *tctx,
+						      enum client_os_version os,
+						      enum spoolss_MajorVersion major_number,
+						      enum spoolss_MinorVersion minor_number)
+{
+	struct spoolss_UserLevel1 level1;
+
+	level1.size	= 28;
+	level1.client	= talloc_asprintf(tctx, "\\\\%s", "mthelena");
+	level1.user	= "GD";
+	level1.processor = PROCESSOR_ARCHITECTURE_AMD64;
+	level1.major	= major_number;
+	level1.minor	= minor_number;
+
+	switch (os) {
+		case WIN_SERVER_2016:
+		case WIN_10:
+			level1.build = 10586;
+			break;
+		case WIN_SERVER_2012:
+		case WIN_8:
+			level1.build = 9200;
+			break;
+		case WIN_SERVER_2008R2:
+		case WIN_7:
+			level1.build = 7007;
+			break;
+		case WIN_SERVER_2008:
+		case WIN_VISTA:
+			level1.build = 6000;
+			break;
+		case WIN_2000:
+			level1.build = 1382;
+			break;
+		default:
+			level1.build = 7007;
+	}
+
+	return level1;
+}
+
 static bool test_AsyncOpenPrinter_byprinter(struct torture_context *tctx,
 					    struct test_iremotewinspool_context *ctx,
 					    struct dcerpc_pipe *p,
 					    const char *printer_name,
+					    struct spoolss_UserLevel1 cinfo,
 					    struct policy_handle *handle)
 {
 	struct dcerpc_binding_handle *b = p->binding_handle;
 	struct spoolss_DevmodeContainer devmode_ctr;
 	struct spoolss_UserLevelCtr client_info_ctr;
-	struct spoolss_UserLevel1 level1;
 	uint32_t access_mask = SERVER_ALL_ACCESS;
 	struct winspool_AsyncOpenPrinter r;
 
 	ZERO_STRUCT(devmode_ctr);
 
-	level1.size	= 28;
-	level1.client	= talloc_asprintf(tctx, "\\\\%s", "mthelena");
-	level1.user	= "GD";
-	level1.build	= 1381;
-	level1.major	= 3;
-	level1.minor	= 0;
-	level1.processor = PROCESSOR_ARCHITECTURE_AMD64;
-
 	client_info_ctr.level = 1;
-	client_info_ctr.user_info.level1 = &level1;
+	client_info_ctr.user_info.level1 = &cinfo;
 
 	r.in.pPrinterName	= printer_name;
 	r.in.pDatatype		= NULL;
@@ -196,6 +242,7 @@ static bool torture_rpc_iremotewinspool_setup_common(struct torture_context *tct
 						     struct test_iremotewinspool_context *t)
 {
 	const char *printer_name;
+	struct spoolss_UserLevel1 client_info;
 	struct dcerpc_binding *binding;
 
 	torture_assert_ntstatus_ok(tctx,
@@ -216,10 +263,12 @@ static bool torture_rpc_iremotewinspool_setup_common(struct torture_context *tct
 
 	printer_name = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(t->iremotewinspool_pipe));
 
+	client_info = test_get_client_info(tctx, WIN_7, 6, 1);
+
 	torture_assert(tctx,
 		test_AsyncOpenPrinter_byprinter(tctx, t,
 						t->iremotewinspool_pipe, printer_name,
-						&t->server_handle),
+						client_info, &t->server_handle),
 						"failed to open printserver");
 	torture_assert(tctx,
 		test_get_environment(tctx,
@@ -269,12 +318,15 @@ static bool test_AsyncClosePrinter(struct torture_context *tctx,
 
 	struct dcerpc_pipe *p = ctx->iremotewinspool_pipe;
 	const char *printer_name;
+	struct spoolss_UserLevel1 client_info;
 	struct policy_handle handle;
 
 	printer_name = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
 
+	client_info = test_get_client_info(tctx, WIN_7, 6, 1);
+
 	torture_assert(tctx,
-		test_AsyncOpenPrinter_byprinter(tctx, ctx, p, printer_name, &handle),
+		test_AsyncOpenPrinter_byprinter(tctx, ctx, p, printer_name, client_info, &handle),
 		"failed to test AsyncOpenPrinter");
 
 	torture_assert(tctx,
@@ -292,12 +344,15 @@ static bool test_AsyncOpenPrinter(struct torture_context *tctx,
 
 	struct dcerpc_pipe *p = ctx->iremotewinspool_pipe;
 	const char *printer_name;
+	struct spoolss_UserLevel1 client_info;
 	struct policy_handle handle;
 
 	printer_name = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
 
+	client_info = test_get_client_info(tctx, WIN_7, 6, 1);
+
 	torture_assert(tctx,
-		test_AsyncOpenPrinter_byprinter(tctx, ctx, p, printer_name, &handle),
+		test_AsyncOpenPrinter_byprinter(tctx, ctx, p, printer_name, client_info, &handle),
 		"failed to test AsyncOpenPrinter");
 
 	test_AsyncClosePrinter_byhandle(tctx, ctx, p, &handle);
@@ -305,6 +360,70 @@ static bool test_AsyncOpenPrinter(struct torture_context *tctx,
 	return true;
 }
 
+/*
+ * Validate the result of AsyncOpenPrinter calls based on client info
+ * build number. Windows Server 2016 rejects an advertised build
+ * number less than 6000(Windows Vista and Windows Server 2008, or older)
+ */
+static bool test_AsyncOpenPrinterValidateBuildNumber(struct torture_context *tctx,
+						     void *private_data)
+{
+	struct test_iremotewinspool_context *ctx =
+		talloc_get_type_abort(private_data, struct test_iremotewinspool_context);
+
+	struct dcerpc_pipe *p = ctx->iremotewinspool_pipe;
+	const char *printer_name;
+	struct spoolss_UserLevel1 client_info;
+	struct policy_handle handle;
+	struct dcerpc_binding_handle *b = p->binding_handle;
+	struct spoolss_DevmodeContainer devmode_ctr;
+	struct spoolss_UserLevelCtr client_info_ctr = {
+		.level = 1,
+	};
+	uint32_t access_mask = SERVER_ALL_ACCESS;
+	struct winspool_AsyncOpenPrinter r;
+	NTSTATUS status;
+	bool ok = false;
+
+	printer_name = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
+	torture_assert_not_null(tctx, printer_name, "Cannot allocate memory");
+
+	/* fail with Windows 2000 build number */
+	client_info = test_get_client_info(tctx, WIN_2000, 3, SPOOLSS_MINOR_VERSION_0);
+
+	ZERO_STRUCT(devmode_ctr);
+
+	client_info_ctr.user_info.level1 = &client_info;
+
+	r.in.pPrinterName	= printer_name;
+	r.in.pDatatype		= NULL;
+	r.in.pDevModeContainer	= &devmode_ctr;
+	r.in.AccessRequired	= access_mask;
+	r.in.pClientInfo	= &client_info_ctr;
+	r.out.pHandle		= &handle;
+
+	status = dcerpc_winspool_AsyncOpenPrinter_r(b, tctx, &r);
+	torture_assert_ntstatus_ok(tctx, status, "AsyncOpenPrinter failed");
+	torture_assert_werr_equal(tctx, r.out.result, WERR_ACCESS_DENIED,
+		"AsyncOpenPrinter should have failed");
+
+	/* succeed with Windows 7 build number */
+	client_info = test_get_client_info(tctx, WIN_7, 6, 1);
+	client_info_ctr.user_info.level1 = &client_info;
+	r.in.pClientInfo	= &client_info_ctr;
+
+	status = dcerpc_winspool_AsyncOpenPrinter_r(b, tctx, &r);
+	torture_assert_ntstatus_ok(tctx, status, "AsyncOpenPrinter failed");
+	torture_assert_werr_ok(tctx, r.out.result,
+		"AsyncOpenPrinter failed");
+
+	ok = test_AsyncClosePrinter_byhandle(tctx, ctx, p, &handle);
+	torture_assert(tctx, ok, "failed to AsyncClosePrinter handle");
+
+	return true;
+
+}
+
 static struct spoolss_NotifyOption *setup_printserver_NotifyOption(struct torture_context *tctx)
 {
 	struct spoolss_NotifyOption *o;
@@ -871,6 +990,7 @@ static bool test_OpenPrinter(struct torture_context *tctx,
 	struct policy_handle handle;
 	struct dcerpc_pipe *s;
 	struct dcerpc_binding *binding;
+	struct spoolss_UserLevel1 client_info;
 	struct spoolss_ClosePrinter r;
 
 	torture_assert_ntstatus_ok(tctx,
@@ -891,8 +1011,10 @@ static bool test_OpenPrinter(struct torture_context *tctx,
 
 	printer_name = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p));
 
+	client_info = test_get_client_info(tctx, WIN_7, 6, 1);
+
 	torture_assert(tctx,
-		test_AsyncOpenPrinter_byprinter(tctx, ctx, p, printer_name, &handle),
+		test_AsyncOpenPrinter_byprinter(tctx, ctx, p, printer_name, client_info, &handle),
 		"failed to open printserver via winspool");
 
 
@@ -928,6 +1050,7 @@ struct torture_suite *torture_rpc_iremotewinspool(TALLOC_CTX *mem_ctx)
 	torture_tcase_add_simple_test(tcase, "AsyncCorePrinterDriverInstalled", test_AsyncCorePrinterDriverInstalled);
 	torture_tcase_add_simple_test(tcase, "AsyncDeletePrintDriverPackage", test_AsyncDeletePrintDriverPackage);
 	torture_tcase_add_simple_test(tcase, "AsyncGetPrinterDriverDirectory", test_AsyncGetPrinterDriverDirectory);
+	torture_tcase_add_simple_test(tcase, "AsyncOpenPrinterValidateBuildNumber", test_AsyncOpenPrinterValidateBuildNumber);
 
 	tcase = torture_suite_add_tcase(suite, "handles");
 
diff --git a/source4/torture/rpc/spoolss_access.c b/source4/torture/rpc/spoolss_access.c
index 28cecf0..946b420 100644
--- a/source4/torture/rpc/spoolss_access.c
+++ b/source4/torture/rpc/spoolss_access.c
@@ -74,9 +74,10 @@ static bool test_openprinter_handle(struct torture_context *tctx,
 	level1.size	= 28;
 	level1.client	= talloc_asprintf(tctx, "\\\\%s", "smbtorture");
 	level1.user	= username;
-	level1.build	= 1381;
-	level1.major	= 3;
-	level1.minor	= 0;
+	/* Windows 7 and Windows Server 2008 R2 */
+	level1.build	= 7007;
+	level1.major	= 6;
+	level1.minor	= 1;
 	level1.processor= 0;
 
 	r.in.printername	= printername;


-- 
Samba Shared Repository



More information about the samba-cvs mailing list