[SCM] Samba Shared Repository - branch v3-5-test updated

Günther Deschner gd at samba.org
Mon Nov 23 05:04:39 MST 2009


The branch, v3-5-test has been updated
       via  4eb7c54... s3-spoolss: move more defines out of nt_printing.h to spoolss.idl where they belong.
       via  4d640c4... s3-printing: remove unused NT_PRINTER_DRIVER_INFO_LEVEL structs.
       via  450a644... s3-printing: use spoolss types and structs while getting and deleting drivers.
       via  6de2a26... s3-printing: use spoolss types and structs while adding drivers.
       via  9dcb99a... s4-smbtorture: add tests for spoolss_EnumPrinterKey to RPC-SPOOLSS-PRINTER.
       via  f8d0eae... s3-spoolss: fix spoolss_EnumPrinterKey client and server code.
       via  b61da25... spoolss: fix spoolss_EnumPrinterKey IDL.
       via  9b1294c... s3-build: delete more object files for "make clean".
       via  f9b1682... s3-build: really fix build of winbind_krb5_locator.
       via  05689c6... s3-build: make sure to remove libds and client object files on make clean.
       via  6f76254... s3-rpcclient: use the parsed binding string flags for auth choice.
      from  3fcf1a8... s3: Fix bug 6338 -- net rpc trustdom list always display "none"

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-5-test


- Log -----------------------------------------------------------------
commit 4eb7c5472f84edd298cd0fc8fdffa6cfd8702304
Author: Günther Deschner <gd at samba.org>
Date:   Wed Nov 18 15:39:52 2009 +0100

    s3-spoolss: move more defines out of nt_printing.h to spoolss.idl where they belong.
    
    Guenther
    (cherry picked from commit 800d6b7820bb949588a799f2835a3d6c07815571)

commit 4d640c449f74ebabb8d1d4003719a5b2735006e9
Author: Günther Deschner <gd at samba.org>
Date:   Tue Nov 17 12:55:45 2009 +0100

    s3-printing: remove unused NT_PRINTER_DRIVER_INFO_LEVEL structs.
    
    Guenther
    (cherry picked from commit 6364c271c4daff94c641eb9e7030f3c9a7ff1ced)

commit 450a644e462073a371a8e465c16abf74fd0abdfe
Author: Günther Deschner <gd at samba.org>
Date:   Tue Nov 17 12:54:02 2009 +0100

    s3-printing: use spoolss types and structs while getting and deleting drivers.
    
    Guenther
    (cherry picked from commit ec56895bdec90cc671a0d562749b3caf161dbdf8)

commit 6de2a26cc1c18b08555ff42513c7f2a685feea55
Author: Günther Deschner <gd at samba.org>
Date:   Mon Nov 16 15:52:31 2009 +0100

    s3-printing: use spoolss types and structs while adding drivers.
    
    Guenther
    (cherry picked from commit 68cc1166d96ac81abce78a7eb60b7b86d0eb4eda)

commit 9dcb99af64eca362873220d5f03d04d63cf2b0de
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 20 16:33:29 2009 +0100

    s4-smbtorture: add tests for spoolss_EnumPrinterKey to RPC-SPOOLSS-PRINTER.
    
    Guenther
    (cherry picked from commit d66b7d80d5ae1a0bf2e3d1e6718f569726da7734)

commit f8d0eae87453015b9fabc511a09079ea9c14b265
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 20 16:34:00 2009 +0100

    s3-spoolss: fix spoolss_EnumPrinterKey client and server code.
    
    Guenther
    (cherry picked from commit d464151f3b47c675664f464b1645ca85de663655)

commit b61da25c37a715782a2edb9afddb0e9a8fdb45ee
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 20 12:57:13 2009 +0100

    spoolss: fix spoolss_EnumPrinterKey IDL.
    
    Guenther
    (cherry picked from commit 366946f29b58a6efa7acbfe2a74b2ddbad4d32a2)

commit 9b1294c4111fd3d8805e9ea4147ac714de943059
Author: Günther Deschner <gd at samba.org>
Date:   Fri Nov 20 12:54:19 2009 +0100

    s3-build: delete more object files for "make clean".
    
    Guenther
    (cherry picked from commit eea5a166e766669b6945bb62c9202fb385179cd1)

commit f9b1682cf2d55d3c255e8a69a2b04d8f0d8fd9b1
Author: Günther Deschner <gd at samba.org>
Date:   Thu Nov 19 13:44:33 2009 +0100

    s3-build: really fix build of winbind_krb5_locator.
    
    Guenther
    (cherry picked from commit fc9f199f2619635f73e8ee7f3b5359521d63f325)

commit 05689c61609e075b64f3a01ba1e81646fda3b9d1
Author: Günther Deschner <gd at samba.org>
Date:   Thu Nov 19 13:39:24 2009 +0100

    s3-build: make sure to remove libds and client object files on make clean.
    
    Guenther
    (cherry picked from commit bf45447aaa35ee3b26fe76af3c73a77d7b10c2ac)

commit 6f76254c31bc61805eca2f5dd8c524ac64577b1f
Author: Günther Deschner <gd at samba.org>
Date:   Thu Nov 12 16:45:33 2009 +0100

    s3-rpcclient: use the parsed binding string flags for auth choice.
    
    This allows rpcclient to be called like this:
    
    rpcclient ncacn_ip_tcp:w2k8r2[sign,seal] -U administrator%secret -c "dscracknames gd"
    
    Guenther
    (cherry picked from commit 3732798008f26052c030e8a8fc9c9404fd6f5669)

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

Summary of changes:
 librpc/gen_ndr/cli_spoolss.c            |    8 +-
 librpc/gen_ndr/cli_spoolss.h            |    4 +-
 librpc/gen_ndr/ndr_spoolss.c            |   80 ++--
 librpc/gen_ndr/spoolss.h                |   64 +++-
 librpc/gen_ndr/srv_spoolss.c            |    4 +-
 librpc/idl/spoolss.idl                  |   70 +++-
 source3/Makefile.in                     |   11 +-
 source3/include/nt_printing.h           |  108 -----
 source3/include/proto.h                 |   27 +-
 source3/printing/nt_printing.c          |  763 +++++++++++++------------------
 source3/registry/reg_backend_printing.c |   31 +-
 source3/rpc_client/cli_spoolss.c        |   24 +-
 source3/rpc_server/srv_spoolss_nt.c     |  544 ++++++++---------------
 source3/rpcclient/rpcclient.c           |   18 +
 source3/smbd/lanman.c                   |   61 ++--
 source4/torture/rpc/spoolss.c           |   81 ++++
 16 files changed, 861 insertions(+), 1037 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/cli_spoolss.c b/librpc/gen_ndr/cli_spoolss.c
index fc2b8f0..d9bbe52 100644
--- a/librpc/gen_ndr/cli_spoolss.c
+++ b/librpc/gen_ndr/cli_spoolss.c
@@ -12207,7 +12207,7 @@ struct tevent_req *rpccli_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
 						      struct rpc_pipe_client *cli,
 						      struct policy_handle *_handle /* [in] [ref] */,
 						      const char *_key_name /* [in] [charset(UTF16)] */,
-						      const char ** *_key_buffer /* [out] [subcontext_size(offered),ref,subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */,
+						      uint16_t *_key_buffer /* [out] [ref,size_is(offered/2)] */,
 						      uint32_t _offered /* [in]  */,
 						      uint32_t *_needed /* [out] [ref] */)
 {
@@ -12278,7 +12278,7 @@ static void rpccli_spoolss_EnumPrinterKey_done(struct tevent_req *subreq)
 	}
 
 	/* Copy out parameters */
-	*state->orig.out.key_buffer = *state->tmp.out.key_buffer;
+	memcpy(state->orig.out.key_buffer, state->tmp.out.key_buffer, state->tmp.in.offered / 2 * sizeof(*state->orig.out.key_buffer));
 	*state->orig.out.needed = *state->tmp.out.needed;
 
 	/* Copy result */
@@ -12317,7 +12317,7 @@ 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)] */,
-				       const char ** *key_buffer /* [out] [subcontext_size(offered),ref,subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */,
+				       uint16_t *key_buffer /* [out] [ref,size_is(offered/2)] */,
 				       uint32_t offered /* [in]  */,
 				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror)
@@ -12345,7 +12345,7 @@ NTSTATUS rpccli_spoolss_EnumPrinterKey(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	*key_buffer = *r.out.key_buffer;
+	memcpy(key_buffer, r.out.key_buffer, r.in.offered / 2 * sizeof(*key_buffer));
 	*needed = *r.out.needed;
 
 	/* Return result */
diff --git a/librpc/gen_ndr/cli_spoolss.h b/librpc/gen_ndr/cli_spoolss.h
index 985337d..943cbce 100644
--- a/librpc/gen_ndr/cli_spoolss.h
+++ b/librpc/gen_ndr/cli_spoolss.h
@@ -1262,7 +1262,7 @@ struct tevent_req *rpccli_spoolss_EnumPrinterKey_send(TALLOC_CTX *mem_ctx,
 						      struct rpc_pipe_client *cli,
 						      struct policy_handle *_handle /* [in] [ref] */,
 						      const char *_key_name /* [in] [charset(UTF16)] */,
-						      const char ** *_key_buffer /* [out] [subcontext_size(offered),ref,subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */,
+						      uint16_t *_key_buffer /* [out] [ref,size_is(offered/2)] */,
 						      uint32_t _offered /* [in]  */,
 						      uint32_t *_needed /* [out] [ref] */);
 NTSTATUS rpccli_spoolss_EnumPrinterKey_recv(struct tevent_req *req,
@@ -1272,7 +1272,7 @@ 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)] */,
-				       const char ** *key_buffer /* [out] [subcontext_size(offered),ref,subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */,
+				       uint16_t *key_buffer /* [out] [ref,size_is(offered/2)] */,
 				       uint32_t offered /* [in]  */,
 				       uint32_t *needed /* [out] [ref] */,
 				       WERROR *werror);
diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c
index fb452bc..53b07f7 100644
--- a/librpc/gen_ndr/ndr_spoolss.c
+++ b/librpc/gen_ndr/ndr_spoolss.c
@@ -27658,6 +27658,7 @@ _PUBLIC_ void ndr_print_spoolss_EnumPrinterDataEx(struct ndr_print *ndr, const c
 
 _PUBLIC_ enum ndr_err_code ndr_push_spoolss_EnumPrinterKey(struct ndr_push *ndr, int flags, const struct spoolss_EnumPrinterKey *r)
 {
+	uint32_t cntr_key_buffer_1;
 	if (flags & NDR_IN) {
 		if (r->in.handle == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -27670,22 +27671,12 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_EnumPrinterKey(struct ndr_push *ndr,
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.offered));
 	}
 	if (flags & NDR_OUT) {
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (r->out.key_buffer == NULL) {
-				return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-			}
-			NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.key_buffer));
-			if (*r->out.key_buffer) {
-				{
-					struct ndr_push *_ndr_key_buffer;
-					NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_key_buffer, 0, r->in.offered));
-					NDR_CHECK(ndr_push_string_array(_ndr_key_buffer, NDR_SCALARS, *r->out.key_buffer));
-					NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_key_buffer, 0, r->in.offered));
-				}
-			}
-			ndr->flags = _flags_save_string_array;
+		if (r->out.key_buffer == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, r->in.offered / 2));
+		for (cntr_key_buffer_1 = 0; cntr_key_buffer_1 < r->in.offered / 2; cntr_key_buffer_1++) {
+			NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->out.key_buffer[cntr_key_buffer_1]));
 		}
 		if (r->out.needed == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
@@ -27698,9 +27689,8 @@ _PUBLIC_ enum ndr_err_code ndr_push_spoolss_EnumPrinterKey(struct ndr_push *ndr,
 
 _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_EnumPrinterKey(struct ndr_pull *ndr, int flags, struct spoolss_EnumPrinterKey *r)
 {
-	uint32_t _ptr_key_buffer;
+	uint32_t cntr_key_buffer_1;
 	TALLOC_CTX *_mem_save_handle_0;
-	TALLOC_CTX *_mem_save_key_buffer_0;
 	TALLOC_CTX *_mem_save_key_buffer_1;
 	TALLOC_CTX *_mem_save_needed_0;
 	if (flags & NDR_IN) {
@@ -27721,40 +27711,22 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_EnumPrinterKey(struct ndr_pull *ndr,
 		NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t)));
 		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.key_name, ndr_get_array_length(ndr, &r->in.key_name), sizeof(uint16_t), CH_UTF16));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.offered));
-		NDR_PULL_ALLOC(ndr, r->out.key_buffer);
-		ZERO_STRUCTP(r->out.key_buffer);
+		NDR_PULL_ALLOC_N(ndr, r->out.key_buffer, r->in.offered / 2);
+		memset(r->out.key_buffer, 0, (r->in.offered / 2) * sizeof(*r->out.key_buffer));
 		NDR_PULL_ALLOC(ndr, r->out.needed);
 		ZERO_STRUCTP(r->out.needed);
 	}
 	if (flags & NDR_OUT) {
-		{
-			uint32_t _flags_save_string_array = ndr->flags;
-			ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM);
-			if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-				NDR_PULL_ALLOC(ndr, r->out.key_buffer);
-			}
-			_mem_save_key_buffer_0 = NDR_PULL_GET_MEM_CTX(ndr);
-			NDR_PULL_SET_MEM_CTX(ndr, r->out.key_buffer, LIBNDR_FLAG_REF_ALLOC);
-			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_key_buffer));
-			if (_ptr_key_buffer) {
-				NDR_PULL_ALLOC(ndr, *r->out.key_buffer);
-			} else {
-				*r->out.key_buffer = NULL;
-			}
-			if (*r->out.key_buffer) {
-				_mem_save_key_buffer_1 = NDR_PULL_GET_MEM_CTX(ndr);
-				NDR_PULL_SET_MEM_CTX(ndr, *r->out.key_buffer, 0);
-				{
-					struct ndr_pull *_ndr_key_buffer;
-					NDR_CHECK(ndr_pull_subcontext_start(ndr, &_ndr_key_buffer, 0, r->in.offered));
-					NDR_CHECK(ndr_pull_string_array(_ndr_key_buffer, NDR_SCALARS, r->out.key_buffer));
-					NDR_CHECK(ndr_pull_subcontext_end(ndr, _ndr_key_buffer, 0, r->in.offered));
-				}
-				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_buffer_1, 0);
-			}
-			NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_buffer_0, LIBNDR_FLAG_REF_ALLOC);
-			ndr->flags = _flags_save_string_array;
+		NDR_CHECK(ndr_pull_array_size(ndr, &r->out.key_buffer));
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC_N(ndr, r->out.key_buffer, ndr_get_array_size(ndr, &r->out.key_buffer));
 		}
+		_mem_save_key_buffer_1 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->out.key_buffer, 0);
+		for (cntr_key_buffer_1 = 0; cntr_key_buffer_1 < r->in.offered / 2; cntr_key_buffer_1++) {
+			NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->out.key_buffer[cntr_key_buffer_1]));
+		}
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_key_buffer_1, 0);
 		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
 			NDR_PULL_ALLOC(ndr, r->out.needed);
 		}
@@ -27763,12 +27735,16 @@ _PUBLIC_ enum ndr_err_code ndr_pull_spoolss_EnumPrinterKey(struct ndr_pull *ndr,
 		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));
+		if (r->out.key_buffer) {
+			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.key_buffer, r->in.offered / 2));
+		}
 	}
 	return NDR_ERR_SUCCESS;
 }
 
 _PUBLIC_ void ndr_print_spoolss_EnumPrinterKey(struct ndr_print *ndr, const char *name, int flags, const struct spoolss_EnumPrinterKey *r)
 {
+	uint32_t cntr_key_buffer_1;
 	ndr_print_struct(ndr, name, "spoolss_EnumPrinterKey");
 	ndr->depth++;
 	if (flags & NDR_SET_VALUES) {
@@ -27790,10 +27766,14 @@ _PUBLIC_ void ndr_print_spoolss_EnumPrinterKey(struct ndr_print *ndr, const char
 		ndr->depth++;
 		ndr_print_ptr(ndr, "key_buffer", r->out.key_buffer);
 		ndr->depth++;
-		ndr_print_ptr(ndr, "key_buffer", *r->out.key_buffer);
+		ndr->print(ndr, "%s: ARRAY(%d)", "key_buffer", (int)r->in.offered / 2);
 		ndr->depth++;
-		if (*r->out.key_buffer) {
-			ndr_print_string_array(ndr, "key_buffer", *r->out.key_buffer);
+		for (cntr_key_buffer_1=0;cntr_key_buffer_1<r->in.offered / 2;cntr_key_buffer_1++) {
+			char *idx_1=NULL;
+			if (asprintf(&idx_1, "[%d]", cntr_key_buffer_1) != -1) {
+				ndr_print_uint16(ndr, "key_buffer", r->out.key_buffer[cntr_key_buffer_1]);
+				free(idx_1);
+			}
 		}
 		ndr->depth--;
 		ndr->depth--;
diff --git a/librpc/gen_ndr/spoolss.h b/librpc/gen_ndr/spoolss.h
index 2b9fc51..a4c0010 100644
--- a/librpc/gen_ndr/spoolss.h
+++ b/librpc/gen_ndr/spoolss.h
@@ -23,6 +23,68 @@
 #define SPOOLSS_ARCHITECTURE_ALL	( "all" )
 #define SPOOLSS_ARCHITECTURE_NT_X86	( "Windows NT x86" )
 #define SPOOLSS_DEFAULT_SERVER_PATH	( "C:\\WINDOWS\\system32\\spool" )
+#define SPOOL_PRINTERDATA_KEY	( "PrinterDriverData" )
+#define SPOOL_DSSPOOLER_KEY	( "DsSpooler" )
+#define SPOOL_DSDRIVER_KEY	( "DsDriver" )
+#define SPOOL_DSUSER_KEY	( "DsUser" )
+#define SPOOL_PNPDATA_KEY	( "PnPData" )
+#define SPOOL_OID_KEY	( "OID" )
+#define SPOOL_REG_ASSETNUMBER	( "assetNumber" )
+#define SPOOL_REG_BYTESPERMINUTE	( "bytesPerMinute" )
+#define SPOOL_REG_DEFAULTPRIORITY	( "defaultPriority" )
+#define SPOOL_REG_DESCRIPTION	( "description" )
+#define SPOOL_REG_DRIVERNAME	( "driverName" )
+#define SPOOL_REG_DRIVERVERSION	( "driverVersion" )
+#define SPOOL_REG_FLAGS	( "flags" )
+#define SPOOL_REG_LOCATION	( "location" )
+#define SPOOL_REG_OPERATINGSYSTEM	( "operatingSystem" )
+#define SPOOL_REG_OPERATINGSYSTEMHOTFIX	( "operatingSystemHotfix" )
+#define SPOOL_REG_OPERATINGSYSTEMSERVICEPACK	( "operatingSystemServicePack" )
+#define SPOOL_REG_OPERATINGSYSTEMVERSION	( "operatingSystemVersion" )
+#define SPOOL_REG_PORTNAME	( "portName" )
+#define SPOOL_REG_PRINTATTRIBUTES	( "printAttributes" )
+#define SPOOL_REG_PRINTBINNAMES	( "printBinNames" )
+#define SPOOL_REG_PRINTCOLLATE	( "printCollate" )
+#define SPOOL_REG_PRINTCOLOR	( "printColor" )
+#define SPOOL_REG_PRINTDUPLEXSUPPORTED	( "printDuplexSupported" )
+#define SPOOL_REG_PRINTENDTIME	( "printEndTime" )
+#define SPOOL_REG_PRINTERNAME	( "printerName" )
+#define SPOOL_REG_PRINTFORMNAME	( "printFormName" )
+#define SPOOL_REG_PRINTKEEPPRINTEDJOBS	( "printKeepPrintedJobs" )
+#define SPOOL_REG_PRINTLANGUAGE	( "printLanguage" )
+#define SPOOL_REG_PRINTMACADDRESS	( "printMACAddress" )
+#define SPOOL_REG_PRINTMAXCOPIES	( "printMaxCopies" )
+#define SPOOL_REG_PRINTMAXRESOLUTIONSUPPORTED	( "printMaxResolutionSupported" )
+#define SPOOL_REG_PRINTMAXXEXTENT	( "printMaxXExtent" )
+#define SPOOL_REG_PRINTMAXYEXTENT	( "printMaxYExtent" )
+#define SPOOL_REG_PRINTMEDIAREADY	( "printMediaReady" )
+#define SPOOL_REG_PRINTMEDIASUPPORTED	( "printMediaSupported" )
+#define SPOOL_REG_PRINTMEMORY	( "printMemory" )
+#define SPOOL_REG_PRINTMINXEXTENT	( "printMinXExtent" )
+#define SPOOL_REG_PRINTMINYEXTENT	( "printMinYExtent" )
+#define SPOOL_REG_PRINTNETWORKADDRESS	( "printNetworkAddress" )
+#define SPOOL_REG_PRINTNOTIFY	( "printNotify" )
+#define SPOOL_REG_PRINTNUMBERUP	( "printNumberUp" )
+#define SPOOL_REG_PRINTORIENTATIONSSUPPORTED	( "printOrientationsSupported" )
+#define SPOOL_REG_PRINTOWNER	( "printOwner" )
+#define SPOOL_REG_PRINTPAGESPERMINUTE	( "printPagesPerMinute" )
+#define SPOOL_REG_PRINTRATE	( "printRate" )
+#define SPOOL_REG_PRINTRATEUNIT	( "printRateUnit" )
+#define SPOOL_REG_PRINTSEPARATORFILE	( "printSeparatorFile" )
+#define SPOOL_REG_PRINTSHARENAME	( "printShareName" )
+#define SPOOL_REG_PRINTSPOOLING	( "printSpooling" )
+#define SPOOL_REGVAL_PRINTWHILESPOOLING	( "PrintWhileSpooling" )
+#define SPOOL_REGVAL_PRINTAFTERSPOOLED	( "PrintAfterSpooled" )
+#define SPOOL_REGVAL_PRINTDIRECT	( "PrintDirect" )
+#define SPOOL_REG_PRINTSTAPLINGSUPPORTED	( "printStaplingSupported" )
+#define SPOOL_REG_PRINTSTARTTIME	( "printStartTime" )
+#define SPOOL_REG_PRINTSTATUS	( "printStatus" )
+#define SPOOL_REG_PRIORITY	( "priority" )
+#define SPOOL_REG_SERVERNAME	( "serverName" )
+#define SPOOL_REG_SHORTSERVERNAME	( "shortServerName" )
+#define SPOOL_REG_UNCNAME	( "uNCName" )
+#define SPOOL_REG_URL	( "url" )
+#define SPOOL_REG_VERSIONNUMBER	( "versionNumber" )
 #define SPL_LOCAL_PORT	( "Local Port" )
 #define SPL_TCPIP_PORT	( "Standard TCP/IP Port" )
 #define SPL_XCV_MONITOR_LOCALMON	( ",XcvMonitor Local Port" )
@@ -3489,7 +3551,7 @@ struct spoolss_EnumPrinterKey {
 	} in;
 
 	struct {
-		const char ** *key_buffer;/* [subcontext_size(offered),ref,subcontext(0),flag(LIBNDR_FLAG_STR_NULLTERM)] */
+		uint16_t *key_buffer;/* [ref,size_is(offered/2)] */
 		uint32_t *needed;/* [ref] */
 		WERROR result;
 	} out;
diff --git a/librpc/gen_ndr/srv_spoolss.c b/librpc/gen_ndr/srv_spoolss.c
index c3266dc..6ca334b 100644
--- a/librpc/gen_ndr/srv_spoolss.c
+++ b/librpc/gen_ndr/srv_spoolss.c
@@ -6325,7 +6325,7 @@ static bool api_spoolss_EnumPrinterKey(pipes_struct *p)
 	}
 
 	ZERO_STRUCT(r->out);
-	r->out.key_buffer = talloc_zero(r, const char **);
+	r->out.key_buffer = talloc_zero_array(r, uint16_t, r->in.offered / 2);
 	if (r->out.key_buffer == NULL) {
 		talloc_free(r);
 		return false;
@@ -9504,7 +9504,7 @@ NTSTATUS rpc_spoolss_dispatch(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx,
 		case NDR_SPOOLSS_ENUMPRINTERKEY: {
 			struct spoolss_EnumPrinterKey *r = (struct spoolss_EnumPrinterKey *)_r;
 			ZERO_STRUCT(r->out);
-			r->out.key_buffer = talloc_zero(mem_ctx, const char **);
+			r->out.key_buffer = talloc_zero_array(mem_ctx, uint16_t, r->in.offered / 2);
 			if (r->out.key_buffer == NULL) {
 			return NT_STATUS_NO_MEMORY;
 			}
diff --git a/librpc/idl/spoolss.idl b/librpc/idl/spoolss.idl
index 04681bf..bb517a1 100644
--- a/librpc/idl/spoolss.idl
+++ b/librpc/idl/spoolss.idl
@@ -1527,6 +1527,74 @@ import "misc.idl", "security.idl", "winreg.idl";
 		[default,flag(NDR_REMAINING)] DATA_BLOB data;
 	} spoolss_PrinterData;
 
+	/* predefined registry key names for printer data */
+
+	const string SPOOL_PRINTERDATA_KEY		= "PrinterDriverData";
+	const string SPOOL_DSSPOOLER_KEY		= "DsSpooler";
+	const string SPOOL_DSDRIVER_KEY			= "DsDriver";
+	const string SPOOL_DSUSER_KEY			= "DsUser";
+	const string SPOOL_PNPDATA_KEY			= "PnPData";
+	const string SPOOL_OID_KEY			= "OID";
+
+	/* predefined value names for printer data */
+
+	const string SPOOL_REG_ASSETNUMBER		= "assetNumber";
+	const string SPOOL_REG_BYTESPERMINUTE		= "bytesPerMinute";
+	const string SPOOL_REG_DEFAULTPRIORITY		= "defaultPriority";
+	const string SPOOL_REG_DESCRIPTION		= "description";
+	const string SPOOL_REG_DRIVERNAME		= "driverName";
+	const string SPOOL_REG_DRIVERVERSION		= "driverVersion";
+	const string SPOOL_REG_FLAGS			= "flags";
+	const string SPOOL_REG_LOCATION			= "location";
+	const string SPOOL_REG_OPERATINGSYSTEM		= "operatingSystem";
+	const string SPOOL_REG_OPERATINGSYSTEMHOTFIX	= "operatingSystemHotfix";
+	const string SPOOL_REG_OPERATINGSYSTEMSERVICEPACK = "operatingSystemServicePack";
+	const string SPOOL_REG_OPERATINGSYSTEMVERSION	= "operatingSystemVersion";
+	const string SPOOL_REG_PORTNAME			= "portName";
+	const string SPOOL_REG_PRINTATTRIBUTES		= "printAttributes";
+	const string SPOOL_REG_PRINTBINNAMES		= "printBinNames";
+	const string SPOOL_REG_PRINTCOLLATE		= "printCollate";
+	const string SPOOL_REG_PRINTCOLOR		= "printColor";
+	const string SPOOL_REG_PRINTDUPLEXSUPPORTED	= "printDuplexSupported";
+	const string SPOOL_REG_PRINTENDTIME		= "printEndTime";
+	const string SPOOL_REG_PRINTERNAME		= "printerName";
+	const string SPOOL_REG_PRINTFORMNAME		= "printFormName";
+	const string SPOOL_REG_PRINTKEEPPRINTEDJOBS	= "printKeepPrintedJobs";
+	const string SPOOL_REG_PRINTLANGUAGE		= "printLanguage";
+	const string SPOOL_REG_PRINTMACADDRESS		= "printMACAddress";
+	const string SPOOL_REG_PRINTMAXCOPIES		= "printMaxCopies";
+	const string SPOOL_REG_PRINTMAXRESOLUTIONSUPPORTED = "printMaxResolutionSupported";
+	const string SPOOL_REG_PRINTMAXXEXTENT		= "printMaxXExtent";
+	const string SPOOL_REG_PRINTMAXYEXTENT		= "printMaxYExtent";
+	const string SPOOL_REG_PRINTMEDIAREADY		= "printMediaReady";
+	const string SPOOL_REG_PRINTMEDIASUPPORTED	= "printMediaSupported";
+	const string SPOOL_REG_PRINTMEMORY		= "printMemory";
+	const string SPOOL_REG_PRINTMINXEXTENT		= "printMinXExtent";
+	const string SPOOL_REG_PRINTMINYEXTENT		= "printMinYExtent";
+	const string SPOOL_REG_PRINTNETWORKADDRESS	= "printNetworkAddress";
+	const string SPOOL_REG_PRINTNOTIFY		= "printNotify";
+	const string SPOOL_REG_PRINTNUMBERUP		= "printNumberUp";
+	const string SPOOL_REG_PRINTORIENTATIONSSUPPORTED = "printOrientationsSupported";
+	const string SPOOL_REG_PRINTOWNER		= "printOwner";
+	const string SPOOL_REG_PRINTPAGESPERMINUTE	= "printPagesPerMinute";
+	const string SPOOL_REG_PRINTRATE		= "printRate";
+	const string SPOOL_REG_PRINTRATEUNIT		= "printRateUnit";
+	const string SPOOL_REG_PRINTSEPARATORFILE	= "printSeparatorFile";
+	const string SPOOL_REG_PRINTSHARENAME		= "printShareName";
+	const string SPOOL_REG_PRINTSPOOLING		= "printSpooling";
+	const string SPOOL_REGVAL_PRINTWHILESPOOLING	= "PrintWhileSpooling";
+	const string SPOOL_REGVAL_PRINTAFTERSPOOLED	= "PrintAfterSpooled";
+	const string SPOOL_REGVAL_PRINTDIRECT		= "PrintDirect";
+	const string SPOOL_REG_PRINTSTAPLINGSUPPORTED	= "printStaplingSupported";
+	const string SPOOL_REG_PRINTSTARTTIME		= "printStartTime";
+	const string SPOOL_REG_PRINTSTATUS		= "printStatus";
+	const string SPOOL_REG_PRIORITY			= "priority";
+	const string SPOOL_REG_SERVERNAME		= "serverName";
+	const string SPOOL_REG_SHORTSERVERNAME		= "shortServerName";
+	const string SPOOL_REG_UNCNAME			= "uNCName";
+	const string SPOOL_REG_URL			= "url";
+	const string SPOOL_REG_VERSIONNUMBER		= "versionNumber";
+
 	[noopnum,noprint,public] WERROR _spoolss_GetPrinterData(
 		[in,ref] policy_handle *handle,
 		[in] 	 [string,charset(UTF16)] uint16 value_name[],
@@ -2508,7 +2576,7 @@ import "misc.idl", "security.idl", "winreg.idl";
 	[public] WERROR spoolss_EnumPrinterKey(
 		[in, ref] policy_handle *handle,
 		[in] [string,charset(UTF16)] uint16 key_name[],
-		[out,ref] [subcontext(0),subcontext_size(offered)] nstring_array **key_buffer,
+		[out,ref] [size_is(offered/2)] uint16 *key_buffer,
 		[in] uint32 offered,
 		[out,ref] uint32 *needed
 	);
diff --git a/source3/Makefile.in b/source3/Makefile.in
index cb10a7c..724c221 100644
--- a/source3/Makefile.in
+++ b/source3/Makefile.in
@@ -2524,7 +2524,7 @@ bin/vlp at EXEEXT@: $(BINARY_PREREQS) $(VLP_OBJ) $(LIBTDB)
 
 bin/winbind_krb5_locator. at SHLIBEXT@: $(BINARY_PREREQS) $(WINBIND_KRB5_LOCATOR_OBJ) $(LIBWBCLIENT)
 	@echo "Linking $@"
-	@$(SHLD) $(LDSHFLAGS) -o $@ $(WINBIND_KRB5_LOCATOR_OBJ) $(LIBWBCLIENT_LIBS) $(KRB5_LIBS) \
+	@$(SHLD) $(LDSHFLAGS) -o $@ $(WINBIND_KRB5_LOCATOR_OBJ) $(LIBWBCLIENT_LIBS) $(KRB5LIBS) \
 		@SONAMEFLAG@`basename $@`
 
 bin/pam_winbind. at SHLIBEXT@: $(BINARY_PREREQS) $(PAM_WINBIND_OBJ) $(LIBTALLOC) $(LIBWBCLIENT)
@@ -3082,18 +3082,21 @@ TOPFILES=dynconfig.o localedir.o
 
 cleanlibs::
 	-rm -f ../lib/*/*.o ../lib/*/*/*.o \
+		../lib/*/*.ho \
 		../libcli/*.o ../libcli/*/*.o ../libcli/*/*/*.o \
 		../librpc/*/*.o \
-		../libgpo/*.o ../libgpo/*/*.o
+		../libgpo/*.o ../libgpo/*/*.o \
+		../libds/*.o ../libds/*/*.o
 
 clean:: cleanlibs
 	-rm -f include/build_env.h
 	-rm -f smbd/build_options.c
 	-rm -f $(PRECOMPILED_HEADER)
 	-rm -f core */*~ *~ \
-		*/*.o */*/*.o */*/*/*.o \
+		*/*.o */*/*.o */*/*/*.o */*/*/*/*.o \
 		../testsuite/*/*.o \
-		../nsswitch/*.o ../nsswitch/*/*.o ../nsswitch/*. at SHLIBEXT@ \
+		../nsswitch/*.o ../nsswitch/*/*.o ../nsswitch/*/*/*.o ../nsswitch/*. at SHLIBEXT@ \
+		../client/*.o \
 		*/*. at SHLIBEXT@ */*/*. at SHLIBEXT@ */*/*/*. at SHLIBEXT@ \
 		$(TOPFILES) $(BIN_PROGS) $(SBIN_PROGS) $(ROOT_SBIN_PROGS) \
 		$(MODULES) $(TORTURE_PROGS) \
diff --git a/source3/include/nt_printing.h b/source3/include/nt_printing.h
index 12096c8..3a509a2 100644
--- a/source3/include/nt_printing.h
+++ b/source3/include/nt_printing.h
@@ -22,114 +22,6 @@
 #ifndef NT_PRINTING_H_
 #define NT_PRINTING_H_
 
-typedef struct nt_printer_driver_info_level_3
-{
-	uint32 cversion;
-
-	fstring name;
-	fstring environment;
-	fstring driverpath;
-	fstring datafile;
-	fstring configfile;
-	fstring helpfile;
-	fstring monitorname;
-	fstring defaultdatatype;
-	fstring *dependentfiles;
-} NT_PRINTER_DRIVER_INFO_LEVEL_3;
-
-/* SPOOL_PRINTER_DRIVER_INFO_LEVEL_6 structure */
-typedef struct {
-	uint32	version;
-	fstring	name;
-	fstring	environment;
-	fstring	driverpath;
-	fstring	datafile;
-	fstring	configfile;
-	fstring	helpfile;
-	fstring	monitorname;
-	fstring	defaultdatatype;
-	fstring	mfgname;
-	fstring	oemurl;
-	fstring	hardwareid;
-	fstring	provider;
-	fstring *dependentfiles;
-	fstring *previousnames;
-} NT_PRINTER_DRIVER_INFO_LEVEL_6;
-
-
-typedef struct nt_printer_driver_info_level
-{
-	NT_PRINTER_DRIVER_INFO_LEVEL_3 *info_3;
-	NT_PRINTER_DRIVER_INFO_LEVEL_6 *info_6;
-} NT_PRINTER_DRIVER_INFO_LEVEL;
-
-/* predefined registry key names for printer data */
-
-#define SPOOL_PRINTERDATA_KEY		"PrinterDriverData"
-#define SPOOL_DSSPOOLER_KEY		"DsSpooler"
-#define SPOOL_DSDRIVER_KEY		"DsDriver"
-#define SPOOL_DSUSER_KEY		"DsUser"
-#define SPOOL_PNPDATA_KEY		"PnPData"
-#define SPOOL_OID_KEY			"OID"
-
-/* predefined value names for printer data */
-#define SPOOL_REG_ASSETNUMBER		"assetNumber"
-#define SPOOL_REG_BYTESPERMINUTE	"bytesPerMinute"
-#define SPOOL_REG_DEFAULTPRIORITY	"defaultPriority"
-#define SPOOL_REG_DESCRIPTION		"description"
-#define SPOOL_REG_DRIVERNAME		"driverName"
-#define SPOOL_REG_DRIVERVERSION		"driverVersion"
-#define SPOOL_REG_FLAGS			"flags"
-#define SPOOL_REG_LOCATION		"location"
-#define SPOOL_REG_OPERATINGSYSTEM	"operatingSystem"
-#define SPOOL_REG_OPERATINGSYSTEMHOTFIX	"operatingSystemHotfix"


-- 
Samba Shared Repository


More information about the samba-cvs mailing list