[SCM] Samba Shared Repository - branch v3-2-test updated - release-3-2-0pre2-2379-ga46ae502

Günther Deschner gd at samba.org
Tue May 20 09:49:57 GMT 2008


The branch, v3-2-test has been updated
       via  a46ae502eacba4323a1cf6a57afed4a854634af1 (commit)
       via  86c4db49b91971a023907ce65e9764774fe5a0d5 (commit)
       via  1916bfa933d7979aefda1f29d469f6a694b91586 (commit)
       via  7bd026f44412024559f7573f48c9201c2d8c8a64 (commit)
       via  e2f73af845bdda822cffdcd5614fadf8d37cd8de (commit)
       via  6305d46c8a9262f5bcb9a2a0ac3599a915df27f4 (commit)
       via  824f590c7ebca0dcde8e57ff0ff4ef21cd7faa8f (commit)
       via  cece7ec384330bf3124723a3d25069d397e27795 (commit)
       via  22658feaf649d4a053ebe02c0f15c4fb4d83ce3b (commit)
       via  7b7ec7ab4153a306537bc98289d9d9a9ed63f87c (commit)
       via  cb7b3b5dfe2c240cdf2c0472f05cdd77b49a184b (commit)
       via  e87f4bf6c850c00cb480bb77b288427b8d4685a5 (commit)
      from  ab83cd9fc012689191d9a218be5c9f439fa560b5 (commit)

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


- Log -----------------------------------------------------------------
commit a46ae502eacba4323a1cf6a57afed4a854634af1
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:44:46 2008 +0200

    Revert "Re-run make idl."
    
    This reverts commit fe7203090c0c51e4561a3b5ce0d5d131d280ba8e.

commit 86c4db49b91971a023907ce65e9764774fe5a0d5
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:33:12 2008 +0200

    Revert "Re-run make idl."
    
    This reverts commit 0d8181dab75887231a168f910203e53ec54fa4eb.

commit 1916bfa933d7979aefda1f29d469f6a694b91586
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:32:18 2008 +0200

    Revert "No need to compose CLI_SERVER_NAME_SLASH in "net rpc service" anymore."
    
    This reverts commit b5291d477381521cd4b71674616f8c9899007002.

commit 7bd026f44412024559f7573f48c9201c2d8c8a64
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:32:05 2008 +0200

    Revert "Move svc_status_string() out of rpc_client/cli_svcctl.c"
    
    This reverts commit 2860ae2eb2cb99b4febb352f516b3fa9fbd2abbb.

commit e2f73af845bdda822cffdcd5614fadf8d37cd8de
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:29:42 2008 +0200

    Revert "Fix IDL for svcctl_EnumDependentServicesW()."
    
    This reverts commit 46bfded43dcabdd2302d82920fb2a37c41e58126.

commit 6305d46c8a9262f5bcb9a2a0ac3599a915df27f4
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:28:17 2008 +0200

    Revert "Re-run make idl."
    
    This reverts commit f67632f9b244800007bfaef9cc2ab932fda78b3c.
    
    Conflicts:
    
    	source/librpc/gen_ndr/cli_ntsvcs.c

commit 824f590c7ebca0dcde8e57ff0ff4ef21cd7faa8f
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:25:56 2008 +0200

    Revert "Comment out some svcctl headers which are now defined in IDL."
    
    This reverts commit 2201a8118c6abae3425dd5728af129bb8f71b564.

commit cece7ec384330bf3124723a3d25069d397e27795
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:25:30 2008 +0200

    Revert "Fill in IDL for PNP_GetDeviceRegProp."
    
    This reverts commit b1b6e93aa1f1b6d80969b6e5dd8f723e21ae8ce8.

commit 22658feaf649d4a053ebe02c0f15c4fb4d83ce3b
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:24:58 2008 +0200

    Revert "Add svcctl_MgrAccessMask and svcctl_ServiceAccessMask."
    
    This reverts commit eeb7c7d9d0c9f7ac171641bc8cafe20db704fdc4.

commit 7b7ec7ab4153a306537bc98289d9d9a9ed63f87c
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:23:13 2008 +0200

    Revert "Use pidl for _svcctl_EnumDependentServicesW()."
    
    This reverts commit 988291a9c07c055213f8979ebe75bb392811008d.

commit cb7b3b5dfe2c240cdf2c0472f05cdd77b49a184b
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:22:43 2008 +0200

    Revert "Remove unused marshalling for SVCCTL_ENUM_DEPENDENT_SERVICES."
    
    This reverts commit 5838d81346a51ef1e996bab938533ae2097f7e47.

commit e87f4bf6c850c00cb480bb77b288427b8d4685a5
Author: Günther Deschner <gd at samba.org>
Date:   Tue May 20 11:21:41 2008 +0200

    Revert "Add ntsvcs_getdevregprop command to rpcclient."
    
    This reverts commit 4abe30fdae511422dccd04d0287d962192beadcb.

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

Summary of changes:
 source/include/rpc_ntsvcs.h        |    2 +
 source/include/rpc_secdes.h        |   10 +--
 source/include/rpc_svcctl.h        |   16 ++++
 source/librpc/gen_ndr/cli_ntsvcs.c |   17 ----
 source/librpc/gen_ndr/cli_ntsvcs.h |    7 --
 source/librpc/gen_ndr/cli_svcctl.c |   12 ++-
 source/librpc/gen_ndr/cli_svcctl.h |    8 +-
 source/librpc/gen_ndr/ndr_ntsvcs.c |  153 ------------------------------------
 source/librpc/gen_ndr/ndr_svcctl.c |  111 ++++++--------------------
 source/librpc/gen_ndr/ndr_svcctl.h |    2 -
 source/librpc/gen_ndr/ntsvcs.h     |   14 ---
 source/librpc/gen_ndr/srv_ntsvcs.c |   10 ---
 source/librpc/gen_ndr/srv_svcctl.c |    2 +-
 source/librpc/gen_ndr/svcctl.h     |   27 +------
 source/librpc/idl/ntsvcs.idl       |   13 +---
 source/librpc/idl/svcctl.idl       |   33 ++------
 source/rpc_client/cli_svcctl.c     |   36 +++++++++
 source/rpc_parse/parse_svcctl.c    |   56 +++++++++++++
 source/rpc_server/srv_svcctl.c     |   18 ++++-
 source/rpc_server/srv_svcctl_nt.c  |   19 +++--
 source/rpcclient/cmd_ntsvcs.c      |   40 ---------
 source/utils/net_rpc_service.c     |   73 ++++++++----------
 22 files changed, 223 insertions(+), 456 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/rpc_ntsvcs.h b/source/include/rpc_ntsvcs.h
index 0056d16..71274cc 100644
--- a/source/include/rpc_ntsvcs.h
+++ b/source/include/rpc_ntsvcs.h
@@ -49,6 +49,8 @@ typedef struct {
 
 /**************************/
 
+#define DEV_REGPROP_DESC	1
+
 typedef struct {
 	UNISTR2 devicepath;
 	uint32 property;
diff --git a/source/include/rpc_secdes.h b/source/include/rpc_secdes.h
index 83103b7..649e806 100644
--- a/source/include/rpc_secdes.h
+++ b/source/include/rpc_secdes.h
@@ -394,7 +394,6 @@ struct standard_mapping {
 
 /* Service Control Manager Bits */ 
 
-#if 0
 #define SC_RIGHT_MGR_CONNECT			0x0001
 #define SC_RIGHT_MGR_CREATE_SERVICE		0x0002
 #define SC_RIGHT_MGR_ENUMERATE_SERVICE		0x0004
@@ -402,8 +401,6 @@ struct standard_mapping {
 #define SC_RIGHT_MGR_QUERY_LOCK_STATUS		0x0010
 #define SC_RIGHT_MGR_MODIFY_BOOT_CONFIG		0x0020
 
-#endif
-
 #define SC_MANAGER_READ_ACCESS \
 	( STANDARD_RIGHTS_READ_ACCESS		| \
 	  SC_RIGHT_MGR_CONNECT			| \
@@ -421,9 +418,8 @@ struct standard_mapping {
 
 #define SC_MANAGER_ALL_ACCESS SC_MANAGER_WRITE_ACCESS
 
-/* Service Object Bits */
+/* Service Object Bits */ 
 
-#if 0
 #define SC_RIGHT_SVC_QUERY_CONFIG		0x0001
 #define SC_RIGHT_SVC_CHANGE_CONFIG		0x0002
 #define SC_RIGHT_SVC_QUERY_STATUS		0x0004
@@ -434,8 +430,6 @@ struct standard_mapping {
 #define SC_RIGHT_SVC_INTERROGATE		0x0080
 #define SC_RIGHT_SVC_USER_DEFINED_CONTROL	0x0100
 
-#endif
-
 #define SERVICE_READ_ACCESS \
 	( STANDARD_RIGHTS_READ_ACCESS		| \
 	  SC_RIGHT_SVC_ENUMERATE_DEPENDENTS	| \
@@ -458,6 +452,8 @@ struct standard_mapping {
 
 #define SERVICE_ALL_ACCESS SERVICE_WRITE_ACCESS
 
+	   
+
 /*
  * Access Bits for registry ACLS
  */
diff --git a/source/include/rpc_svcctl.h b/source/include/rpc_svcctl.h
index aa1d166..5a87e35 100644
--- a/source/include/rpc_svcctl.h
+++ b/source/include/rpc_svcctl.h
@@ -216,6 +216,22 @@ typedef struct {
 
 typedef struct {
 	POLICY_HND handle;
+	uint32 state;
+	uint32 buffer_size;
+} SVCCTL_Q_ENUM_DEPENDENT_SERVICES;
+
+typedef struct {
+	RPC_BUFFER buffer;
+	uint32 needed;
+	uint32 returned;
+	WERROR status;
+} SVCCTL_R_ENUM_DEPENDENT_SERVICES;
+
+
+/**************************/
+
+typedef struct {
+	POLICY_HND handle;
 	uint32 buffer_size;
 } SVCCTL_Q_QUERY_SERVICE_CONFIG;
 
diff --git a/source/librpc/gen_ndr/cli_ntsvcs.c b/source/librpc/gen_ndr/cli_ntsvcs.c
index edc0c55..615cdb6 100644
--- a/source/librpc/gen_ndr/cli_ntsvcs.c
+++ b/source/librpc/gen_ndr/cli_ntsvcs.c
@@ -566,25 +566,12 @@ NTSTATUS rpccli_PNP_GetDepth(struct rpc_pipe_client *cli,
 
 NTSTATUS rpccli_PNP_GetDeviceRegProp(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
-				     const char *devicepath /* [in] [ref,charset(UTF16)] */,
-				     uint32_t property /* [in]  */,
-				     uint32_t *unknown1 /* [in,out] [ref] */,
-				     uint8_t *buffer /* [out] [ref,length_is(*buffer_size),size_is(*buffer_size)] */,
-				     uint32_t *buffer_size /* [in,out] [ref] */,
-				     uint32_t *needed /* [in,out] [ref] */,
-				     uint32_t unknown3 /* [in]  */,
 				     WERROR *werror)
 {
 	struct PNP_GetDeviceRegProp r;
 	NTSTATUS status;
 
 	/* In parameters */
-	r.in.devicepath = devicepath;
-	r.in.property = property;
-	r.in.unknown1 = unknown1;
-	r.in.buffer_size = buffer_size;
-	r.in.needed = needed;
-	r.in.unknown3 = unknown3;
 
 	if (DEBUGLEVEL >= 10) {
 		NDR_PRINT_IN_DEBUG(PNP_GetDeviceRegProp, &r);
@@ -610,10 +597,6 @@ NTSTATUS rpccli_PNP_GetDeviceRegProp(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	*unknown1 = *r.out.unknown1;
-	memcpy(buffer, r.out.buffer, *r.in.buffer_size * sizeof(*buffer));
-	*buffer_size = *r.out.buffer_size;
-	*needed = *r.out.needed;
 
 	/* Return result */
 	if (werror) {
diff --git a/source/librpc/gen_ndr/cli_ntsvcs.h b/source/librpc/gen_ndr/cli_ntsvcs.h
index a52a79e..c20673f 100644
--- a/source/librpc/gen_ndr/cli_ntsvcs.h
+++ b/source/librpc/gen_ndr/cli_ntsvcs.h
@@ -48,13 +48,6 @@ NTSTATUS rpccli_PNP_GetDepth(struct rpc_pipe_client *cli,
 			     WERROR *werror);
 NTSTATUS rpccli_PNP_GetDeviceRegProp(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
-				     const char *devicepath /* [in] [ref,charset(UTF16)] */,
-				     uint32_t property /* [in]  */,
-				     uint32_t *unknown1 /* [in,out] [ref] */,
-				     uint8_t *buffer /* [out] [ref,length_is(*buffer_size),size_is(*buffer_size)] */,
-				     uint32_t *buffer_size /* [in,out] [ref] */,
-				     uint32_t *needed /* [in,out] [ref] */,
-				     uint32_t unknown3 /* [in]  */,
 				     WERROR *werror);
 NTSTATUS rpccli_PNP_SetDeviceRegProp(struct rpc_pipe_client *cli,
 				     TALLOC_CTX *mem_ctx,
diff --git a/source/librpc/gen_ndr/cli_svcctl.c b/source/librpc/gen_ndr/cli_svcctl.c
index 406a4a8..4065044 100644
--- a/source/librpc/gen_ndr/cli_svcctl.c
+++ b/source/librpc/gen_ndr/cli_svcctl.c
@@ -661,10 +661,10 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli,
 					      TALLOC_CTX *mem_ctx,
 					      struct policy_handle *service /* [in] [ref] */,
 					      uint32_t state /* [in]  */,
-					      uint8_t *service_status /* [out] [ref,size_is(buf_size)] */,
-					      uint32_t buf_size /* [in] [range(0,0x40000)] */,
-					      uint32_t *bytes_needed /* [out] [ref,range(0,0x40000)] */,
-					      uint32_t *services_returned /* [out] [ref,range(0,0x40000)] */,
+					      struct ENUM_SERVICE_STATUS *service_status /* [out] [unique] */,
+					      uint32_t buf_size /* [in]  */,
+					      uint32_t *bytes_needed /* [out] [ref] */,
+					      uint32_t *services_returned /* [out] [ref] */,
 					      WERROR *werror)
 {
 	struct svcctl_EnumDependentServicesW r;
@@ -699,7 +699,9 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli,
 	}
 
 	/* Return variables */
-	memcpy(service_status, r.out.service_status, r.in.buf_size * sizeof(*service_status));
+	if (service_status && r.out.service_status) {
+		*service_status = *r.out.service_status;
+	}
 	*bytes_needed = *r.out.bytes_needed;
 	*services_returned = *r.out.services_returned;
 
diff --git a/source/librpc/gen_ndr/cli_svcctl.h b/source/librpc/gen_ndr/cli_svcctl.h
index 56f0a2b..582a342 100644
--- a/source/librpc/gen_ndr/cli_svcctl.h
+++ b/source/librpc/gen_ndr/cli_svcctl.h
@@ -94,10 +94,10 @@ NTSTATUS rpccli_svcctl_EnumDependentServicesW(struct rpc_pipe_client *cli,
 					      TALLOC_CTX *mem_ctx,
 					      struct policy_handle *service /* [in] [ref] */,
 					      uint32_t state /* [in]  */,
-					      uint8_t *service_status /* [out] [ref,size_is(buf_size)] */,
-					      uint32_t buf_size /* [in] [range(0,0x40000)] */,
-					      uint32_t *bytes_needed /* [out] [ref,range(0,0x40000)] */,
-					      uint32_t *services_returned /* [out] [ref,range(0,0x40000)] */,
+					      struct ENUM_SERVICE_STATUS *service_status /* [out] [unique] */,
+					      uint32_t buf_size /* [in]  */,
+					      uint32_t *bytes_needed /* [out] [ref] */,
+					      uint32_t *services_returned /* [out] [ref] */,
 					      WERROR *werror);
 NTSTATUS rpccli_svcctl_EnumServicesStatusW(struct rpc_pipe_client *cli,
 					   TALLOC_CTX *mem_ctx,
diff --git a/source/librpc/gen_ndr/ndr_ntsvcs.c b/source/librpc/gen_ndr/ndr_ntsvcs.c
index 1ce5b15..9a0e2bc 100644
--- a/source/librpc/gen_ndr/ndr_ntsvcs.c
+++ b/source/librpc/gen_ndr/ndr_ntsvcs.c
@@ -688,48 +688,8 @@ _PUBLIC_ void ndr_print_PNP_GetDepth(struct ndr_print *ndr, const char *name, in
 static enum ndr_err_code ndr_push_PNP_GetDeviceRegProp(struct ndr_push *ndr, int flags, const struct PNP_GetDeviceRegProp *r)
 {
 	if (flags & NDR_IN) {
-		if (r->in.devicepath == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.devicepath, CH_UTF16)));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.devicepath, CH_UTF16)));
-		NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.devicepath, ndr_charset_length(r->in.devicepath, CH_UTF16), sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.property));
-		if (r->in.unknown1 == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.unknown1));
-		if (r->in.buffer_size == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.buffer_size));
-		if (r->in.needed == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.needed));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown3));
 	}
 	if (flags & NDR_OUT) {
-		if (r->out.unknown1 == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.unknown1));
-		if (r->out.buffer == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0));
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.buffer, *r->out.buffer_size));
-		if (r->out.buffer_size == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
-		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.buffer_size));
-		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;
@@ -737,89 +697,10 @@ static enum ndr_err_code ndr_push_PNP_GetDeviceRegProp(struct ndr_push *ndr, int
 
 static enum ndr_err_code ndr_pull_PNP_GetDeviceRegProp(struct ndr_pull *ndr, int flags, struct PNP_GetDeviceRegProp *r)
 {
-	TALLOC_CTX *_mem_save_unknown1_0;
-	TALLOC_CTX *_mem_save_buffer_size_0;
-	TALLOC_CTX *_mem_save_needed_0;
 	if (flags & NDR_IN) {
-		ZERO_STRUCT(r->out);
-
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->in.devicepath));
-		NDR_CHECK(ndr_pull_array_length(ndr, &r->in.devicepath));
-		if (ndr_get_array_length(ndr, &r->in.devicepath) > ndr_get_array_size(ndr, &r->in.devicepath)) {
-			return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.devicepath), ndr_get_array_length(ndr, &r->in.devicepath));
-		}
-		NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.devicepath), sizeof(uint16_t)));
-		NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.devicepath, ndr_get_array_length(ndr, &r->in.devicepath), sizeof(uint16_t), CH_UTF16));
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.property));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.unknown1);
-		}
-		_mem_save_unknown1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.unknown1, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.unknown1));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown1_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.buffer_size);
-		}
-		_mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.buffer_size, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.buffer_size));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->in.needed);
-		}
-		_mem_save_needed_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->in.needed, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.needed));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_needed_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown3));
-		NDR_PULL_ALLOC(ndr, r->out.unknown1);
-		*r->out.unknown1 = *r->in.unknown1;
-		NDR_PULL_ALLOC_N(ndr, r->out.buffer, *r->in.buffer_size);
-		memset(r->out.buffer, 0, (*r->in.buffer_size) * sizeof(*r->out.buffer));
-		NDR_PULL_ALLOC(ndr, r->out.buffer_size);
-		*r->out.buffer_size = *r->in.buffer_size;
-		NDR_PULL_ALLOC(ndr, r->out.needed);
-		*r->out.needed = *r->in.needed;
 	}
 	if (flags & NDR_OUT) {
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.unknown1);
-		}
-		_mem_save_unknown1_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.unknown1, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.unknown1));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_unknown1_0, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->out.buffer));
-		NDR_CHECK(ndr_pull_array_length(ndr, &r->out.buffer));
-		if (ndr_get_array_length(ndr, &r->out.buffer) > ndr_get_array_size(ndr, &r->out.buffer)) {
-			return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.buffer), ndr_get_array_length(ndr, &r->out.buffer));
-		}
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC_N(ndr, r->out.buffer, ndr_get_array_size(ndr, &r->out.buffer));
-		}
-		NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->out.buffer, ndr_get_array_length(ndr, &r->out.buffer)));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC(ndr, r->out.buffer_size);
-		}
-		_mem_save_buffer_size_0 = NDR_PULL_GET_MEM_CTX(ndr);
-		NDR_PULL_SET_MEM_CTX(ndr, r->out.buffer_size, LIBNDR_FLAG_REF_ALLOC);
-		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.buffer_size));
-		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_buffer_size_0, LIBNDR_FLAG_REF_ALLOC);
-		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));
-		if (r->out.buffer) {
-			NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
-		}
-		if (r->out.buffer) {
-			NDR_CHECK(ndr_check_array_length(ndr, (void*)&r->out.buffer, *r->out.buffer_size));
-		}
 	}
 	return NDR_ERR_SUCCESS;
 }
@@ -834,45 +715,11 @@ _PUBLIC_ void ndr_print_PNP_GetDeviceRegProp(struct ndr_print *ndr, const char *
 	if (flags & NDR_IN) {
 		ndr_print_struct(ndr, "in", "PNP_GetDeviceRegProp");
 		ndr->depth++;
-		ndr_print_ptr(ndr, "devicepath", r->in.devicepath);
-		ndr->depth++;
-		ndr_print_string(ndr, "devicepath", r->in.devicepath);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "property", r->in.property);
-		ndr_print_ptr(ndr, "unknown1", r->in.unknown1);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "unknown1", *r->in.unknown1);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "buffer_size", r->in.buffer_size);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "buffer_size", *r->in.buffer_size);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "needed", r->in.needed);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "needed", *r->in.needed);
-		ndr->depth--;
-		ndr_print_uint32(ndr, "unknown3", r->in.unknown3);
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
 		ndr_print_struct(ndr, "out", "PNP_GetDeviceRegProp");
 		ndr->depth++;
-		ndr_print_ptr(ndr, "unknown1", r->out.unknown1);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "unknown1", *r->out.unknown1);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "buffer", r->out.buffer);
-		ndr->depth++;
-		ndr_print_array_uint8(ndr, "buffer", r->out.buffer, *r->out.buffer_size);
-		ndr->depth--;
-		ndr_print_ptr(ndr, "buffer_size", r->out.buffer_size);
-		ndr->depth++;
-		ndr_print_uint32(ndr, "buffer_size", *r->out.buffer_size);
-		ndr->depth--;
-		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--;
 	}
diff --git a/source/librpc/gen_ndr/ndr_svcctl.c b/source/librpc/gen_ndr/ndr_svcctl.c
index eb39296..8ceb6b0 100644
--- a/source/librpc/gen_ndr/ndr_svcctl.c
+++ b/source/librpc/gen_ndr/ndr_svcctl.c
@@ -295,63 +295,6 @@ _PUBLIC_ void ndr_print_svcctl_ServerType(struct ndr_print *ndr, const char *nam
 	ndr->depth--;
 }
 
-static enum ndr_err_code ndr_push_svcctl_MgrAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_svcctl_MgrAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_svcctl_MgrAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CONNECT", SC_RIGHT_MGR_CONNECT, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_CREATE_SERVICE", SC_RIGHT_MGR_CREATE_SERVICE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_ENUMERATE_SERVICE", SC_RIGHT_MGR_ENUMERATE_SERVICE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_LOCK", SC_RIGHT_MGR_LOCK, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_QUERY_LOCK_STATUS", SC_RIGHT_MGR_QUERY_LOCK_STATUS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_MGR_MODIFY_BOOT_CONFIG", SC_RIGHT_MGR_MODIFY_BOOT_CONFIG, r);
-	ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_svcctl_ServiceAccessMask(struct ndr_push *ndr, int ndr_flags, uint32_t r)
-{
-	NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r));
-	return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_svcctl_ServiceAccessMask(struct ndr_pull *ndr, int ndr_flags, uint32_t *r)
-{
-	uint32_t v;
-	NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v));
-	*r = v;
-	return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_svcctl_ServiceAccessMask(struct ndr_print *ndr, const char *name, uint32_t r)
-{
-	ndr_print_uint32(ndr, name, r);
-	ndr->depth++;
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_CONFIG", SC_RIGHT_SVC_QUERY_CONFIG, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_CHANGE_CONFIG", SC_RIGHT_SVC_CHANGE_CONFIG, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_QUERY_STATUS", SC_RIGHT_SVC_QUERY_STATUS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_ENUMERATE_DEPENDENTS", SC_RIGHT_SVC_ENUMERATE_DEPENDENTS, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_START", SC_RIGHT_SVC_START, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_STOP", SC_RIGHT_SVC_STOP, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_PAUSE_CONTINUE", SC_RIGHT_SVC_PAUSE_CONTINUE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_INTERROGATE", SC_RIGHT_SVC_INTERROGATE, r);
-	ndr_print_bitmap_flag(ndr, sizeof(uint32_t), "SC_RIGHT_SVC_USER_DEFINED_CONTROL", SC_RIGHT_SVC_USER_DEFINED_CONTROL, r);
-	ndr->depth--;
-}
-
 static enum ndr_err_code ndr_push_svcctl_CloseServiceHandle(struct ndr_push *ndr, int flags, const struct svcctl_CloseServiceHandle *r)
 {
 	if (flags & NDR_IN) {
@@ -1750,11 +1693,10 @@ static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
 		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
 	}
 	if (flags & NDR_OUT) {
-		if (r->out.service_status == NULL) {
-			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		NDR_CHECK(ndr_push_unique_ptr(ndr, r->out.service_status));
+		if (r->out.service_status) {
+			NDR_CHECK(ndr_push_ENUM_SERVICE_STATUS(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.service_status));
 		}
-		NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.buf_size));
-		NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->out.service_status, r->in.buf_size));
 		if (r->out.bytes_needed == NULL) {
 			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
 		}
@@ -1770,7 +1712,9 @@ static enum ndr_err_code ndr_push_svcctl_EnumDependentServicesW(struct ndr_push
 
 static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull *ndr, int flags, struct svcctl_EnumDependentServicesW *r)
 {
+	uint32_t _ptr_service_status;
 	TALLOC_CTX *_mem_save_service_0;
+	TALLOC_CTX *_mem_save_service_status_0;
 	TALLOC_CTX *_mem_save_bytes_needed_0;
 	TALLOC_CTX *_mem_save_services_returned_0;
 	if (flags & NDR_IN) {
@@ -1785,31 +1729,30 @@ static enum ndr_err_code ndr_pull_svcctl_EnumDependentServicesW(struct ndr_pull
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_service_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.state));
 		NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.buf_size));
-		if (r->in.buf_size < 0 || r->in.buf_size > 0x40000) {
-			return ndr_pull_error(ndr, NDR_ERR_RANGE, "value out of range");
-		}
-		NDR_PULL_ALLOC_N(ndr, r->out.service_status, r->in.buf_size);
-		memset(r->out.service_status, 0, (r->in.buf_size) * sizeof(*r->out.service_status));
 		NDR_PULL_ALLOC(ndr, r->out.bytes_needed);
 		ZERO_STRUCTP(r->out.bytes_needed);
 		NDR_PULL_ALLOC(ndr, r->out.services_returned);
 		ZERO_STRUCTP(r->out.services_returned);
 	}
 	if (flags & NDR_OUT) {
-		NDR_CHECK(ndr_pull_array_size(ndr, &r->out.service_status));
-		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
-			NDR_PULL_ALLOC_N(ndr, r->out.service_status, ndr_get_array_size(ndr, &r->out.service_status));
+		NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_service_status));
+		if (_ptr_service_status) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list