[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha6-562-gf157c1a

Günther Deschner gd at samba.org
Fri Feb 6 13:59:43 GMT 2009


The branch, master has been updated
       via  f157c1a07f3fbbc461a806b10e24e25d0b261070 (commit)
       via  33d2507ba2374afabeaff455c08896fa45babbe8 (commit)
       via  88aaac39fa2a38997c11d4f545f3e223129a5a6a (commit)
       via  8ddb81ca0addf1c9bad4f624e55ee5679aa3fe4c (commit)
       via  3954cd83aa6976ef8c799eeee00f81fefb693934 (commit)
       via  99398e8768f308f01b3298bfbc3bb783f6ea8c2f (commit)
       via  d400de2ffa53bebe13cba0d2d3c18dcc05bc37bd (commit)
       via  6e1c008913f545d731dae6aefc1d11053a32d151 (commit)
       via  0d4dbe6012ee6f15256de14f8d4d6b32eb4ca313 (commit)
       via  b970eb791cdf8893881bab3c113fdd5f2ff9866e (commit)
       via  8153916f4aad1482351719ed2f1d91d48fe89197 (commit)
       via  22e2f220be4ac05aead7ba7a893904299c5bbfd8 (commit)
       via  cf15c687d279d3807caa90560d8799d6b00f005b (commit)
       via  37c89c143009f1c6e0dae819bf08baaeca81df7d (commit)
       via  cb5837dc192dabfe5d0edfb1be9acc3672785cd4 (commit)
       via  121b5f4afdb22ae720947183303feab4c48f41a3 (commit)
       via  de7a30817de5d77579520a8c776c2a8b1b2ffcc7 (commit)
       via  c1a1480f7a31b9c6651f546acafa58d1f3de3457 (commit)
       via  45104ba1459c3698d6c34ca3ab31c28cbf6c710c (commit)
       via  c2975cc7ead5da000b3d2c2e9af7bfbe98be79a4 (commit)
       via  cb0687f9e7dee2e722929dd1d7064e7598acc40a (commit)
       via  c2cd781d0aac788f1ee4c9c510b7726911df9020 (commit)
       via  82ce981a4116a10e04e04c8083167e6b83595caf (commit)
       via  ea2d151721f531defc5b97dd7c91cd8df6300b1e (commit)
       via  8b84c97e8db17858344d1f953d199bd40ac70883 (commit)
      from  d895ca505f7f9c4edf476a0c966e93917e35575c (commit)

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


- Log -----------------------------------------------------------------
commit f157c1a07f3fbbc461a806b10e24e25d0b261070
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 14:51:47 2009 +0100

    s4-spoolss: fix s4 spoolss server build (using a temp macro).
    
    Guenther

commit 33d2507ba2374afabeaff455c08896fa45babbe8
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:53:16 2009 +0100

    s4-smbtorture: fix test_EnumPrinterKey.
    
    Guenther

commit 88aaac39fa2a38997c11d4f545f3e223129a5a6a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:44:44 2009 +0100

    s4-smbtorture: fix test_EnumPrinterDataEx.
    
    Guenther

commit 8ddb81ca0addf1c9bad4f624e55ee5679aa3fe4c
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:38:59 2009 +0100

    s4-smbtorture: fix test_GetPrinterDataEx.
    
    Guenther

commit 3954cd83aa6976ef8c799eeee00f81fefb693934
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:28:48 2009 +0100

    s4-smbtorture: fix test_GetPrinterDriver2.
    
    Guenther

commit 99398e8768f308f01b3298bfbc3bb783f6ea8c2f
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:09:22 2009 +0100

    s4-smbtorture: fix test_GetForm.
    
    Guenther

commit d400de2ffa53bebe13cba0d2d3c18dcc05bc37bd
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:44:57 2009 +0100

    s4-smbtorture: fix test_DoPrintTest.
    
    Guenther

commit 6e1c008913f545d731dae6aefc1d11053a32d151
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:42:13 2009 +0100

    s4-smbtorture: fix test_DoPrintTest.
    
    Guenther

commit 0d4dbe6012ee6f15256de14f8d4d6b32eb4ca313
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:32:57 2009 +0100

    s4-smbtorture: fix test_GetPrinterDriverDirectory.
    
    Guenther

commit b970eb791cdf8893881bab3c113fdd5f2ff9866e
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:25:47 2009 +0100

    s4-smbtorture: fix test_GetPrinter.
    
    Guenther

commit 8153916f4aad1482351719ed2f1d91d48fe89197
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:22:35 2009 +0100

    s4-smbtorture: fix test_GetPrinter.
    
    Guenther

commit 22e2f220be4ac05aead7ba7a893904299c5bbfd8
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:18:06 2009 +0100

    s4-smbtorture: fix test_GetJob.
    
    Guenther

commit cf15c687d279d3807caa90560d8799d6b00f005b
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:57:13 2009 +0100

    s3: re-run make samba3-idl.
    
    Guenther

commit 37c89c143009f1c6e0dae819bf08baaeca81df7d
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:53:03 2009 +0100

    spoolss: fix spoolss_EnumPrinterKey IDL.
    
    Guenther

commit cb5837dc192dabfe5d0edfb1be9acc3672785cd4
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:42:23 2009 +0100

    spoolss: fix spoolss_EnumPrinterDataEx IDL.
    
    Guenther

commit 121b5f4afdb22ae720947183303feab4c48f41a3
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:33:59 2009 +0100

    spoolss: fix spoolss_GetPrinterDataEx IDL.
    
    Guenther

commit de7a30817de5d77579520a8c776c2a8b1b2ffcc7
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:25:51 2009 +0100

    spoolss: fix spoolss_GetPrinterDriver2 IDL.
    
    Guenther

commit c1a1480f7a31b9c6651f546acafa58d1f3de3457
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:21:13 2009 +0100

    spoolss: fix spoolss_XcvData IDL.
    
    Guenther

commit 45104ba1459c3698d6c34ca3ab31c28cbf6c710c
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:10:10 2009 +0100

    spoolss: fix spoolss_GetForm IDL.
    
    Guenther

commit c2975cc7ead5da000b3d2c2e9af7bfbe98be79a4
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 13:06:13 2009 +0100

    spoolss: fix spoolss_ReadPrinter IDL.
    
    Guenther

commit cb0687f9e7dee2e722929dd1d7064e7598acc40a
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:43:18 2009 +0100

    spoolss: fix spoolss_WritePrinter IDL.
    
    Guenther

commit c2cd781d0aac788f1ee4c9c510b7726911df9020
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:40:37 2009 +0100

    spoolss: fix spoolss_StartDocPrinter IDL.
    
    Guenther

commit 82ce981a4116a10e04e04c8083167e6b83595caf
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:31:51 2009 +0100

    spoolss: fix spoolss_GetPrinterDriverDirectory IDL.
    
    Guenther

commit ea2d151721f531defc5b97dd7c91cd8df6300b1e
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:17:33 2009 +0100

    spoolss: fix spoolss_GetPrinter IDL.
    
    Guenther

commit 8b84c97e8db17858344d1f953d199bd40ac70883
Author: Günther Deschner <gd at samba.org>
Date:   Fri Feb 6 12:17:03 2009 +0100

    spoolss: fix spoolss_GetJob IDL.
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/cli_spoolss.c                |  100 +++---
 librpc/gen_ndr/cli_spoolss.h                |   49 ++--
 librpc/gen_ndr/ndr_spoolss.c                |  527 ++++++++++++++++++++++-----
 librpc/gen_ndr/spoolss.h                    |   51 ++--
 librpc/gen_ndr/srv_spoolss.c                |   47 +--
 librpc/idl/spoolss.idl                      |   49 ++--
 source4/rpc_server/spoolss/dcesrv_spoolss.c |   14 +-
 source4/torture/rpc/samba3rpc.c             |    6 +-
 source4/torture/rpc/spoolss.c               |   51 ++-
 source4/torture/rpc/spoolss_win.c           |   27 +-
 10 files changed, 646 insertions(+), 275 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/cli_spoolss.c b/librpc/gen_ndr/cli_spoolss.c
index 1071f2a..dfb0060 100644
--- a/librpc/gen_ndr/cli_spoolss.c
+++ b/librpc/gen_ndr/cli_spoolss.c
@@ -173,7 +173,7 @@ NTSTATUS rpccli_spoolss_GetJob(struct rpc_pipe_client *cli,
 			       DATA_BLOB *buffer /* [in] [unique] */,
 			       uint32_t offered /* [in]  */,
 			       union spoolss_JobInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-			       uint32_t needed /* [out]  */,
+			       uint32_t *needed /* [out] [ref] */,
 			       WERROR *werror)
 {
 	struct spoolss_GetJob r;
@@ -212,7 +212,7 @@ NTSTATUS rpccli_spoolss_GetJob(struct rpc_pipe_client *cli,
 	if (info && r.out.info) {
 		*info = *r.out.info;
 	}
-	return NT_STATUS_NOT_SUPPORTED;
+	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
@@ -427,7 +427,7 @@ NTSTATUS rpccli_spoolss_GetPrinter(struct rpc_pipe_client *cli,
 				   DATA_BLOB *buffer /* [in] [unique] */,
 				   uint32_t offered /* [in]  */,
 				   union spoolss_PrinterInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-				   uint32_t needed /* [out]  */,
+				   uint32_t *needed /* [out] [ref] */,
 				   WERROR *werror)
 {
 	struct spoolss_GetPrinter r;
@@ -465,7 +465,7 @@ NTSTATUS rpccli_spoolss_GetPrinter(struct rpc_pipe_client *cli,
 	if (info && r.out.info) {
 		*info = *r.out.info;
 	}
-	return NT_STATUS_NOT_SUPPORTED;
+	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
@@ -624,7 +624,7 @@ NTSTATUS rpccli_spoolss_GetPrinterDriverDirectory(struct rpc_pipe_client *cli,
 						  DATA_BLOB *buffer /* [in] [unique] */,
 						  uint32_t offered /* [in]  */,
 						  union spoolss_DriverDirectoryInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-						  uint32_t needed /* [out]  */,
+						  uint32_t *needed /* [out] [ref] */,
 						  WERROR *werror)
 {
 	struct spoolss_GetPrinterDriverDirectory r;
@@ -663,7 +663,7 @@ NTSTATUS rpccli_spoolss_GetPrinterDriverDirectory(struct rpc_pipe_client *cli,
 	if (info && r.out.info) {
 		*info = *r.out.info;
 	}
-	return NT_STATUS_NOT_SUPPORTED;
+	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
@@ -868,7 +868,7 @@ NTSTATUS rpccli_spoolss_StartDocPrinter(struct rpc_pipe_client *cli,
 					struct policy_handle *handle /* [in] [ref] */,
 					uint32_t level /* [in]  */,
 					union spoolss_DocumentInfo info /* [in] [switch_is(level)] */,
-					uint32_t job_id /* [out]  */,
+					uint32_t *job_id /* [out] [ref] */,
 					WERROR *werror)
 {
 	struct spoolss_StartDocPrinter r;
@@ -902,7 +902,7 @@ NTSTATUS rpccli_spoolss_StartDocPrinter(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	return NT_STATUS_NOT_SUPPORTED;
+	*job_id = *r.out.job_id;
 
 	/* Return result */
 	if (werror) {
@@ -960,7 +960,7 @@ NTSTATUS rpccli_spoolss_WritePrinter(struct rpc_pipe_client *cli,
 				     struct policy_handle *handle /* [in] [ref] */,
 				     DATA_BLOB data /* [in]  */,
 				     uint32_t _data_size /* [in] [value(r->in.data.length)] */,
-				     uint32_t num_written /* [out]  */,
+				     uint32_t *num_written /* [out] [ref] */,
 				     WERROR *werror)
 {
 	struct spoolss_WritePrinter r;
@@ -994,7 +994,7 @@ NTSTATUS rpccli_spoolss_WritePrinter(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	return NT_STATUS_NOT_SUPPORTED;
+	*num_written = *r.out.num_written;
 
 	/* Return result */
 	if (werror) {
@@ -1093,9 +1093,9 @@ NTSTATUS rpccli_spoolss_AbortPrinter(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_spoolss_ReadPrinter(struct rpc_pipe_client *cli,
 				    TALLOC_CTX *mem_ctx,
 				    struct policy_handle *handle /* [in] [ref] */,
+				    uint8_t *data /* [out] [ref,size_is(data_size)] */,
 				    uint32_t data_size /* [in]  */,
-				    DATA_BLOB data /* [out]  */,
-				    uint32_t _data_size /* [out] [value(r->out.data.length)] */,
+				    uint32_t *_data_size /* [out] [ref] */,
 				    WERROR *werror)
 {
 	struct spoolss_ReadPrinter r;
@@ -1128,8 +1128,8 @@ NTSTATUS rpccli_spoolss_ReadPrinter(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
+	memcpy(data, r.out.data, r.in.data_size * sizeof(*data));
+	*_data_size = *r.out._data_size;
 
 	/* Return result */
 	if (werror) {
@@ -1553,7 +1553,7 @@ NTSTATUS rpccli_spoolss_GetForm(struct rpc_pipe_client *cli,
 				DATA_BLOB *buffer /* [in] [unique] */,
 				uint32_t offered /* [in]  */,
 				union spoolss_FormInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-				uint32_t needed /* [out]  */,
+				uint32_t *needed /* [out] [ref] */,
 				WERROR *werror)
 {
 	struct spoolss_GetForm r;
@@ -1592,7 +1592,7 @@ NTSTATUS rpccli_spoolss_GetForm(struct rpc_pipe_client *cli,
 	if (info && r.out.info) {
 		*info = *r.out.info;
 	}
-	return NT_STATUS_NOT_SUPPORTED;
+	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
@@ -2494,9 +2494,9 @@ NTSTATUS rpccli_spoolss_GetPrinterDriver2(struct rpc_pipe_client *cli,
 					  uint32_t client_major_version /* [in]  */,
 					  uint32_t client_minor_version /* [in]  */,
 					  DATA_BLOB *info /* [out] [unique] */,
-					  uint32_t needed /* [out]  */,
-					  uint32_t server_major_version /* [out]  */,
-					  uint32_t server_minor_version /* [out]  */,
+					  uint32_t *needed /* [out] [ref] */,
+					  uint32_t *server_major_version /* [out] [ref] */,
+					  uint32_t *server_minor_version /* [out] [ref] */,
 					  WERROR *werror)
 {
 	struct spoolss_GetPrinterDriver2 r;
@@ -2537,9 +2537,9 @@ NTSTATUS rpccli_spoolss_GetPrinterDriver2(struct rpc_pipe_client *cli,
 	if (info && r.out.info) {
 		*info = *r.out.info;
 	}
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
+	*needed = *r.out.needed;
+	*server_major_version = *r.out.server_major_version;
+	*server_minor_version = *r.out.server_minor_version;
 
 	/* Return result */
 	if (werror) {
@@ -3637,10 +3637,10 @@ NTSTATUS rpccli_spoolss_GetPrinterDataEx(struct rpc_pipe_client *cli,
 					 struct policy_handle *handle /* [in] [ref] */,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
+					 uint32_t *type /* [out] [ref] */,
+					 uint8_t *buffer /* [out] [ref,size_is(offered)] */,
 					 uint32_t offered /* [in]  */,
-					 uint32_t type /* [out]  */,
-					 DATA_BLOB buffer /* [out]  */,
-					 uint32_t needed /* [out]  */,
+					 uint32_t *needed /* [out] [ref] */,
 					 WERROR *werror)
 {
 	struct spoolss_GetPrinterDataEx r;
@@ -3675,9 +3675,9 @@ NTSTATUS rpccli_spoolss_GetPrinterDataEx(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
+	*type = *r.out.type;
+	memcpy(buffer, r.out.buffer, r.in.offered * sizeof(*buffer));
+	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
@@ -3691,10 +3691,10 @@ NTSTATUS rpccli_spoolss_EnumPrinterDataEx(struct rpc_pipe_client *cli,
 					  TALLOC_CTX *mem_ctx,
 					  struct policy_handle *handle /* [in] [ref] */,
 					  const char *key_name /* [in] [charset(UTF16)] */,
+					  uint8_t *buffer /* [out] [ref,size_is(offered)] */,
 					  uint32_t offered /* [in]  */,
-					  DATA_BLOB buffer /* [out]  */,
-					  uint32_t needed /* [out]  */,
-					  uint32_t count /* [out]  */,
+					  uint32_t *needed /* [out] [ref] */,
+					  uint32_t *count /* [out] [ref] */,
 					  WERROR *werror)
 {
 	struct spoolss_EnumPrinterDataEx r;
@@ -3728,9 +3728,9 @@ NTSTATUS rpccli_spoolss_EnumPrinterDataEx(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
+	memcpy(buffer, r.out.buffer, r.in.offered * sizeof(*buffer));
+	*needed = *r.out.needed;
+	*count = *r.out.count;
 
 	/* Return result */
 	if (werror) {
@@ -3744,9 +3744,9 @@ NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx,
 				       struct policy_handle *handle /* [in] [ref] */,
 				       const char *key_name /* [in] [charset(UTF16)] */,
-				       uint32_t key_buffer_size /* [out]  */,
-				       uint16_t *key_buffer /* [out]  */,
-				       uint32_t needed /* [in,out]  */,
+				       uint16_t *key_buffer /* [out] [ref,size_is(key_buffer_size/2)] */,
+				       uint32_t key_buffer_size /* [in]  */,
+				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror)
 {
 	struct spoolss_EnumPrinterKey r;
@@ -3755,7 +3755,7 @@ NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 	/* In parameters */
 	r.in.handle = handle;
 	r.in.key_name = key_name;
-	r.in.needed = needed;
+	r.in.key_buffer_size = key_buffer_size;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(spoolss_EnumPrinterKey, &r);
@@ -3780,9 +3780,8 @@ NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	return NT_STATUS_NOT_SUPPORTED;
-	memcpy(key_buffer, r.out.key_buffer, key_buffer_size * sizeof(*key_buffer));
-	return NT_STATUS_NOT_SUPPORTED;
+	memcpy(key_buffer, r.out.key_buffer, r.in.key_buffer_size / 2 * sizeof(*key_buffer));
+	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
@@ -4091,11 +4090,10 @@ NTSTATUS rpccli_spoolss_XcvData(struct rpc_pipe_client *cli,
 				const char *function_name /* [in] [charset(UTF16)] */,
 				DATA_BLOB in_data /* [in]  */,
 				uint32_t _in_data_length /* [in] [value(r->in.in_data.length)] */,
-				uint32_t offered /* [in]  */,
-				uint32_t unknown1 /* [in]  */,
-				DATA_BLOB out_data /* [out]  */,
-				uint32_t needed /* [out]  */,
-				uint32_t unknown2 /* [out]  */,
+				uint8_t *out_data /* [out] [ref,size_is(out_data_size)] */,
+				uint32_t out_data_size /* [in]  */,
+				uint32_t *needed /* [out] [ref] */,
+				uint32_t *status_code /* [in,out] [ref] */,
 				WERROR *werror)
 {
 	struct spoolss_XcvData r;
@@ -4106,8 +4104,8 @@ NTSTATUS rpccli_spoolss_XcvData(struct rpc_pipe_client *cli,
 	r.in.function_name = function_name;
 	r.in.in_data = in_data;
 	r.in._in_data_length = _in_data_length;
-	r.in.offered = offered;
-	r.in.unknown1 = unknown1;
+	r.in.out_data_size = out_data_size;
+	r.in.status_code = status_code;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(spoolss_XcvData, &r);
@@ -4132,9 +4130,9 @@ NTSTATUS rpccli_spoolss_XcvData(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
-	return NT_STATUS_NOT_SUPPORTED;
+	memcpy(out_data, r.out.out_data, r.in.out_data_size * sizeof(*out_data));
+	*needed = *r.out.needed;
+	*status_code = *r.out.status_code;
 
 	/* Return result */
 	if (werror) {
diff --git a/librpc/gen_ndr/cli_spoolss.h b/librpc/gen_ndr/cli_spoolss.h
index ba7de89..b1adf39 100644
--- a/librpc/gen_ndr/cli_spoolss.h
+++ b/librpc/gen_ndr/cli_spoolss.h
@@ -35,7 +35,7 @@ NTSTATUS rpccli_spoolss_GetJob(struct rpc_pipe_client *cli,
 			       DATA_BLOB *buffer /* [in] [unique] */,
 			       uint32_t offered /* [in]  */,
 			       union spoolss_JobInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-			       uint32_t needed /* [out]  */,
+			       uint32_t *needed /* [out] [ref] */,
 			       WERROR *werror);
 NTSTATUS rpccli_spoolss_EnumJobs(struct rpc_pipe_client *cli,
 				 TALLOC_CTX *mem_ctx,
@@ -72,7 +72,7 @@ NTSTATUS rpccli_spoolss_GetPrinter(struct rpc_pipe_client *cli,
 				   DATA_BLOB *buffer /* [in] [unique] */,
 				   uint32_t offered /* [in]  */,
 				   union spoolss_PrinterInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-				   uint32_t needed /* [out]  */,
+				   uint32_t *needed /* [out] [ref] */,
 				   WERROR *werror);
 NTSTATUS rpccli_spoolss_AddPrinterDriver(struct rpc_pipe_client *cli,
 					 TALLOC_CTX *mem_ctx,
@@ -99,7 +99,7 @@ NTSTATUS rpccli_spoolss_GetPrinterDriverDirectory(struct rpc_pipe_client *cli,
 						  DATA_BLOB *buffer /* [in] [unique] */,
 						  uint32_t offered /* [in]  */,
 						  union spoolss_DriverDirectoryInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-						  uint32_t needed /* [out]  */,
+						  uint32_t *needed /* [out] [ref] */,
 						  WERROR *werror);
 NTSTATUS rpccli_spoolss_DeletePrinterDriver(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
@@ -130,7 +130,7 @@ NTSTATUS rpccli_spoolss_StartDocPrinter(struct rpc_pipe_client *cli,
 					struct policy_handle *handle /* [in] [ref] */,
 					uint32_t level /* [in]  */,
 					union spoolss_DocumentInfo info /* [in] [switch_is(level)] */,
-					uint32_t job_id /* [out]  */,
+					uint32_t *job_id /* [out] [ref] */,
 					WERROR *werror);
 NTSTATUS rpccli_spoolss_StartPagePrinter(struct rpc_pipe_client *cli,
 					 TALLOC_CTX *mem_ctx,
@@ -141,7 +141,7 @@ NTSTATUS rpccli_spoolss_WritePrinter(struct rpc_pipe_client *cli,
 				     struct policy_handle *handle /* [in] [ref] */,
 				     DATA_BLOB data /* [in]  */,
 				     uint32_t _data_size /* [in] [value(r->in.data.length)] */,
-				     uint32_t num_written /* [out]  */,
+				     uint32_t *num_written /* [out] [ref] */,
 				     WERROR *werror);
 NTSTATUS rpccli_spoolss_EndPagePrinter(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx,
@@ -154,9 +154,9 @@ NTSTATUS rpccli_spoolss_AbortPrinter(struct rpc_pipe_client *cli,
 NTSTATUS rpccli_spoolss_ReadPrinter(struct rpc_pipe_client *cli,
 				    TALLOC_CTX *mem_ctx,
 				    struct policy_handle *handle /* [in] [ref] */,
+				    uint8_t *data /* [out] [ref,size_is(data_size)] */,
 				    uint32_t data_size /* [in]  */,
-				    DATA_BLOB data /* [out]  */,
-				    uint32_t _data_size /* [out] [value(r->out.data.length)] */,
+				    uint32_t *_data_size /* [out] [ref] */,
 				    WERROR *werror);
 NTSTATUS rpccli_spoolss_EndDocPrinter(struct rpc_pipe_client *cli,
 				      TALLOC_CTX *mem_ctx,
@@ -211,7 +211,7 @@ NTSTATUS rpccli_spoolss_GetForm(struct rpc_pipe_client *cli,
 				DATA_BLOB *buffer /* [in] [unique] */,
 				uint32_t offered /* [in]  */,
 				union spoolss_FormInfo *info /* [out] [unique,subcontext_size(offered),subcontext(4),switch_is(level)] */,
-				uint32_t needed /* [out]  */,
+				uint32_t *needed /* [out] [ref] */,
 				WERROR *werror);
 NTSTATUS rpccli_spoolss_SetForm(struct rpc_pipe_client *cli,
 				TALLOC_CTX *mem_ctx,
@@ -311,9 +311,9 @@ NTSTATUS rpccli_spoolss_GetPrinterDriver2(struct rpc_pipe_client *cli,
 					  uint32_t client_major_version /* [in]  */,
 					  uint32_t client_minor_version /* [in]  */,
 					  DATA_BLOB *info /* [out] [unique] */,
-					  uint32_t needed /* [out]  */,
-					  uint32_t server_major_version /* [out]  */,
-					  uint32_t server_minor_version /* [out]  */,
+					  uint32_t *needed /* [out] [ref] */,
+					  uint32_t *server_major_version /* [out] [ref] */,
+					  uint32_t *server_minor_version /* [out] [ref] */,
 					  WERROR *werror);
 NTSTATUS rpccli_spoolss_FindFirstPrinterChangeNotification(struct rpc_pipe_client *cli,
 							   TALLOC_CTX *mem_ctx,
@@ -441,27 +441,27 @@ NTSTATUS rpccli_spoolss_GetPrinterDataEx(struct rpc_pipe_client *cli,
 					 struct policy_handle *handle /* [in] [ref] */,
 					 const char *key_name /* [in] [charset(UTF16)] */,
 					 const char *value_name /* [in] [charset(UTF16)] */,
+					 uint32_t *type /* [out] [ref] */,
+					 uint8_t *buffer /* [out] [ref,size_is(offered)] */,
 					 uint32_t offered /* [in]  */,
-					 uint32_t type /* [out]  */,
-					 DATA_BLOB buffer /* [out]  */,
-					 uint32_t needed /* [out]  */,
+					 uint32_t *needed /* [out] [ref] */,
 					 WERROR *werror);
 NTSTATUS rpccli_spoolss_EnumPrinterDataEx(struct rpc_pipe_client *cli,
 					  TALLOC_CTX *mem_ctx,
 					  struct policy_handle *handle /* [in] [ref] */,
 					  const char *key_name /* [in] [charset(UTF16)] */,
+					  uint8_t *buffer /* [out] [ref,size_is(offered)] */,
 					  uint32_t offered /* [in]  */,
-					  DATA_BLOB buffer /* [out]  */,
-					  uint32_t needed /* [out]  */,
-					  uint32_t count /* [out]  */,
+					  uint32_t *needed /* [out] [ref] */,
+					  uint32_t *count /* [out] [ref] */,
 					  WERROR *werror);
 NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 				       TALLOC_CTX *mem_ctx,
 				       struct policy_handle *handle /* [in] [ref] */,
 				       const char *key_name /* [in] [charset(UTF16)] */,
-				       uint32_t key_buffer_size /* [out]  */,
-				       uint16_t *key_buffer /* [out]  */,
-				       uint32_t needed /* [in,out]  */,
+				       uint16_t *key_buffer /* [out] [ref,size_is(key_buffer_size/2)] */,
+				       uint32_t key_buffer_size /* [in]  */,
+				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror);
 NTSTATUS rpccli_spoolss_DeletePrinterDataEx(struct rpc_pipe_client *cli,
 					    TALLOC_CTX *mem_ctx,
@@ -493,11 +493,10 @@ NTSTATUS rpccli_spoolss_XcvData(struct rpc_pipe_client *cli,
 				const char *function_name /* [in] [charset(UTF16)] */,
 				DATA_BLOB in_data /* [in]  */,
 				uint32_t _in_data_length /* [in] [value(r->in.in_data.length)] */,
-				uint32_t offered /* [in]  */,
-				uint32_t unknown1 /* [in]  */,
-				DATA_BLOB out_data /* [out]  */,
-				uint32_t needed /* [out]  */,
-				uint32_t unknown2 /* [out]  */,
+				uint8_t *out_data /* [out] [ref,size_is(out_data_size)] */,
+				uint32_t out_data_size /* [in]  */,
+				uint32_t *needed /* [out] [ref] */,
+				uint32_t *status_code /* [in,out] [ref] */,
 				WERROR *werror);
 NTSTATUS rpccli_spoolss_AddPrinterDriverEx(struct rpc_pipe_client *cli,
 					   TALLOC_CTX *mem_ctx,
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index a677f53..77321b4 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -9447,7 +9447,10 @@ static enum ndr_err_code ndr_push_spoolss_GetJob(struct ndr_push *ndr, int flags
 				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 			}
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.needed));
+		if (r->out.needed == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -9460,6 +9463,7 @@ static enum ndr_err_code ndr_pull_spoolss_GetJob(struct ndr_pull *ndr, int flags
 	TALLOC_CTX *_mem_save_handle_0;
 	TALLOC_CTX *_mem_save_buffer_0;
 	TALLOC_CTX *_mem_save_info_0;
+	TALLOC_CTX *_mem_save_needed_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
 
@@ -9485,6 +9489,8 @@ static enum ndr_err_code ndr_pull_spoolss_GetJob(struct ndr_pull *ndr, int flags
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_0, 0);
 		}
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
+		NDR_PULL_ALLOC(ndr, r->out.needed);
+		ZERO_STRUCTP(r->out.needed);
 	}
 	if (flags & NDR_OUT) {
 		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_info));
@@ -9505,7 +9511,13 @@ static enum ndr_err_code ndr_pull_spoolss_GetJob(struct ndr_pull *ndr, int flags
 			}
 			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_0, 0);
 		}
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->out.needed));
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->out.needed);
+		}
+		_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.needed, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.needed));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -9546,7 +9558,10 @@ _PUBLIC_ void ndr_print_spoolss_GetJob(struct ndr_print *ndr, const char *name,
 			ndr_print_spoolss_JobInfo(ndr, "info", r->out.info);
 		}
 		ndr->depth--;
-		ndr_print_uint32(ndr, "needed", r->out.needed);
+		ndr_print_ptr(ndr, "needed", r->out.needed);
+		ndr->depth++;
+		ndr_print_uint32(ndr, "needed", *r->out.needed);
+		ndr->depth--;
 		ndr_print_WERROR(ndr, "result", r->out.result);
 		ndr->depth--;
 	}
@@ -9932,7 +9947,10 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_GetPrinter(struct ndr_push *ndr, int
 				NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info, 4, r->in.offered));
 			}
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->out.needed));
+		if (r->out.needed == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.needed));
 		NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result));
 	}
 	return NDR_ERR_SUCCESS;
@@ -9945,6 +9963,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_GetPrinter(struct ndr_pull *ndr, int
 	TALLOC_CTX *_mem_save_handle_0;
 	TALLOC_CTX *_mem_save_buffer_0;


-- 
Samba Shared Repository


More information about the samba-cvs mailing list