[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-1249-g9e54f41

Günther Deschner gd at samba.org
Wed Feb 25 22:49:04 GMT 2009


The branch, master has been updated
       via  9e54f4151cf0e5d958f1929d854d082635b11c39 (commit)
       via  7e01ec5560e8193c8e8853ba49c0ee625956c1fd (commit)
       via  8bf0c256d7f06fe7d0abf031921abd83e6956c8b (commit)
      from  9b8bb1ad957f9c2d91e55ac6a27657cd8f6d4a14 (commit)

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


- Log -----------------------------------------------------------------
commit 9e54f4151cf0e5d958f1929d854d082635b11c39
Author: Günther Deschner <gd at samba.org>
Date:   Wed Feb 25 23:43:55 2009 +0100

    s3-spoolss: fix _spoolss_AddJob behaviour.
    
    Guenther

commit 7e01ec5560e8193c8e8853ba49c0ee625956c1fd
Author: Günther Deschner <gd at samba.org>
Date:   Wed Feb 25 23:42:03 2009 +0100

    s4-spoolss: implement dcesrv_spoolss_AddJob which always is a dummy.
    
    Guenther

commit 8bf0c256d7f06fe7d0abf031921abd83e6956c8b
Author: Günther Deschner <gd at samba.org>
Date:   Mon Feb 9 22:22:45 2009 +0100

    s4-smbtorture: add test_AddJob test to RPC-SPOOLSS test.
    
    Guenther

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

Summary of changes:
 source3/rpc_server/srv_spoolss_nt.c         |    4 +++
 source4/rpc_server/spoolss/dcesrv_spoolss.c |    6 ++++-
 source4/torture/rpc/spoolss.c               |   29 +++++++++++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 2f89775..5a79dca 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -6619,6 +6619,10 @@ WERROR _spoolss_AddJob(pipes_struct *p,
 	/* this is what a NT server returns for AddJob. AddJob must fail on
 	 * non-local printers */
 
+	if (r->in.level != 1) {
+		return WERR_UNKNOWN_LEVEL;
+	}
+
 	return WERR_INVALID_PARAM;
 }
 
diff --git a/source4/rpc_server/spoolss/dcesrv_spoolss.c b/source4/rpc_server/spoolss/dcesrv_spoolss.c
index 89b93bb..f1ef2f0 100644
--- a/source4/rpc_server/spoolss/dcesrv_spoolss.c
+++ b/source4/rpc_server/spoolss/dcesrv_spoolss.c
@@ -546,7 +546,11 @@ static WERROR dcesrv_spoolss_EndDocPrinter(struct dcesrv_call_state *dce_call, T
 static WERROR dcesrv_spoolss_AddJob(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
 		       struct spoolss_AddJob *r)
 {
-	DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
+	if (r->in.level != 1) {
+		return WERR_UNKNOWN_LEVEL;
+	}
+
+	return WERR_INVALID_PARAM;
 }
 
 
diff --git a/source4/torture/rpc/spoolss.c b/source4/torture/rpc/spoolss.c
index 04c9768..9d8bc4b 100644
--- a/source4/torture/rpc/spoolss.c
+++ b/source4/torture/rpc/spoolss.c
@@ -1045,6 +1045,33 @@ static bool test_SetJob(struct torture_context *tctx,
 	return true;
 }
 
+static bool test_AddJob(struct torture_context *tctx,
+			struct dcerpc_pipe *p,
+			struct policy_handle *handle)
+{
+	NTSTATUS status;
+	struct spoolss_AddJob r;
+	uint32_t needed;
+
+	r.in.level = 0;
+	r.in.handle = handle;
+	r.in.offered = 0;
+	r.out.needed = &needed;
+
+	torture_comment(tctx, "Testing AddJob\n");
+
+	status = dcerpc_spoolss_AddJob(p, tctx, &r);
+	torture_assert_werr_equal(tctx, r.out.result, WERR_UNKNOWN_LEVEL, "AddJob failed");
+
+	r.in.level = 1;
+
+	status = dcerpc_spoolss_AddJob(p, tctx, &r);
+	torture_assert_werr_equal(tctx, r.out.result, WERR_INVALID_PARAM, "AddJob failed");
+
+	return true;
+}
+
+
 static bool test_EnumJobs(struct torture_context *tctx, 
 			  struct dcerpc_pipe *p, 
 			  struct policy_handle *handle)
@@ -1084,6 +1111,7 @@ static bool test_EnumJobs(struct torture_context *tctx,
 		info = r.out.info;
 
 		for (j = 0; j < count; j++) {
+
 			test_GetJob(tctx, p, handle, info[j].info1.job_id);
 			test_SetJob(tctx, p, handle, info[j].info1.job_id, SPOOLSS_JOB_CONTROL_PAUSE);
 			test_SetJob(tctx, p, handle, info[j].info1.job_id, SPOOLSS_JOB_CONTROL_RESUME);
@@ -1163,6 +1191,7 @@ static bool test_DoPrintTest(struct torture_context *tctx,
 	torture_assert_ntstatus_ok(tctx, status, "dcerpc_spoolss_EndDocPrinter failed");
 	torture_assert_werr_ok(tctx, e.out.result, "EndDocPrinter failed");
 
+	ret &= test_AddJob(tctx, p, handle);
 	ret &= test_EnumJobs(tctx, p, handle);
 
 	ret &= test_SetJob(tctx, p, handle, job_id, SPOOLSS_JOB_CONTROL_DELETE);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list