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

Günther Deschner gd at samba.org
Tue Apr 22 21:13:07 GMT 2008


The branch, v3-2-test has been updated
       via  7d8461d080c92a83bd7a8d168fdf1fe98e8bec9a (commit)
       via  c92b585cc42ba9f42727512c08c896ee40e5e319 (commit)
       via  cb0b0fd2684b63257421aba599f9d2111c0438bf (commit)
      from  20ddbcaa0c113646cea774c36209f382cada50b0 (commit)

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


- Log -----------------------------------------------------------------
commit 7d8461d080c92a83bd7a8d168fdf1fe98e8bec9a
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 22 23:11:53 2008 +0200

    rpcclient: Add getdispinfoidx command.
    
    Guenther

commit c92b585cc42ba9f42727512c08c896ee40e5e319
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 22 23:11:21 2008 +0200

    IDL: rerun make idl.
    
    Guenther

commit cb0b0fd2684b63257421aba599f9d2111c0438bf
Author: Günther Deschner <gd at samba.org>
Date:   Tue Apr 22 23:10:35 2008 +0200

    IDL: Fix IDL for samr_GetDisplayEnumerationIndex{2}.
    
    Guenther

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

Summary of changes:
 source/librpc/gen_ndr/cli_samr.c |    4 +-
 source/librpc/gen_ndr/cli_samr.h |    4 +-
 source/librpc/gen_ndr/ndr_samr.c |   38 +++++++++++++++++++----
 source/librpc/gen_ndr/samr.h     |    4 +-
 source/librpc/idl/samr.idl       |    4 +-
 source/rpcclient/cmd_samr.c      |   62 ++++++++++++++++++++++++++++++++++++++
 6 files changed, 102 insertions(+), 14 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/librpc/gen_ndr/cli_samr.c b/source/librpc/gen_ndr/cli_samr.c
index bdc9837..cff548c 100644
--- a/source/librpc/gen_ndr/cli_samr.c
+++ b/source/librpc/gen_ndr/cli_samr.c
@@ -1821,7 +1821,7 @@ NTSTATUS rpccli_samr_GetDisplayEnumerationIndex(struct rpc_pipe_client *cli,
 						TALLOC_CTX *mem_ctx,
 						struct policy_handle *domain_handle /* [in] [ref] */,
 						uint16_t level /* [in]  */,
-						struct lsa_String name /* [in]  */,
+						struct lsa_String *name /* [in] [ref] */,
 						uint32_t *idx /* [out] [ref] */)
 {
 	struct samr_GetDisplayEnumerationIndex r;
@@ -2165,7 +2165,7 @@ NTSTATUS rpccli_samr_GetDisplayEnumerationIndex2(struct rpc_pipe_client *cli,
 						 TALLOC_CTX *mem_ctx,
 						 struct policy_handle *domain_handle /* [in] [ref] */,
 						 uint16_t level /* [in]  */,
-						 struct lsa_String name /* [in]  */,
+						 struct lsa_String *name /* [in] [ref] */,
 						 uint32_t *idx /* [out] [ref] */)
 {
 	struct samr_GetDisplayEnumerationIndex2 r;
diff --git a/source/librpc/gen_ndr/cli_samr.h b/source/librpc/gen_ndr/cli_samr.h
index 53cdbfa..4c7a30e 100644
--- a/source/librpc/gen_ndr/cli_samr.h
+++ b/source/librpc/gen_ndr/cli_samr.h
@@ -230,7 +230,7 @@ NTSTATUS rpccli_samr_GetDisplayEnumerationIndex(struct rpc_pipe_client *cli,
 						TALLOC_CTX *mem_ctx,
 						struct policy_handle *domain_handle /* [in] [ref] */,
 						uint16_t level /* [in]  */,
-						struct lsa_String name /* [in]  */,
+						struct lsa_String *name /* [in] [ref] */,
 						uint32_t *idx /* [out] [ref] */);
 NTSTATUS rpccli_samr_TestPrivateFunctionsDomain(struct rpc_pipe_client *cli,
 						TALLOC_CTX *mem_ctx,
@@ -270,7 +270,7 @@ NTSTATUS rpccli_samr_GetDisplayEnumerationIndex2(struct rpc_pipe_client *cli,
 						 TALLOC_CTX *mem_ctx,
 						 struct policy_handle *domain_handle /* [in] [ref] */,
 						 uint16_t level /* [in]  */,
-						 struct lsa_String name /* [in]  */,
+						 struct lsa_String *name /* [in] [ref] */,
 						 uint32_t *idx /* [out] [ref] */);
 NTSTATUS rpccli_samr_CreateUser2(struct rpc_pipe_client *cli,
 				 TALLOC_CTX *mem_ctx,
diff --git a/source/librpc/gen_ndr/ndr_samr.c b/source/librpc/gen_ndr/ndr_samr.c
index db95ec3..c3f8bc6 100644
--- a/source/librpc/gen_ndr/ndr_samr.c
+++ b/source/librpc/gen_ndr/ndr_samr.c
@@ -9346,7 +9346,10 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex(struct ndr_pus
 		}
 		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
-		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+		if (r->in.name == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
 	}
 	if (flags & NDR_OUT) {
 		if (r->out.idx == NULL) {
@@ -9361,6 +9364,7 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex(struct ndr_pus
 static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex(struct ndr_pull *ndr, int flags, struct samr_GetDisplayEnumerationIndex *r)
 {
 	TALLOC_CTX *_mem_save_domain_handle_0;
+	TALLOC_CTX *_mem_save_name_0;
 	TALLOC_CTX *_mem_save_idx_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
@@ -9373,7 +9377,13 @@ static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex(struct ndr_pul
 		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_handle_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
-		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->in.name);
+		}
+		_mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_PULL_ALLOC(ndr, r->out.idx);
 		ZERO_STRUCTP(r->out.idx);
 	}
@@ -9405,7 +9415,10 @@ _PUBLIC_ void ndr_print_samr_GetDisplayEnumerationIndex(struct ndr_print *ndr, c
 		ndr_print_policy_handle(ndr, "domain_handle", r->in.domain_handle);
 		ndr->depth--;
 		ndr_print_uint16(ndr, "level", r->in.level);
-		ndr_print_lsa_String(ndr, "name", &r->in.name);
+		ndr_print_ptr(ndr, "name", r->in.name);
+		ndr->depth++;
+		ndr_print_lsa_String(ndr, "name", r->in.name);
+		ndr->depth--;
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
@@ -10008,7 +10021,10 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex2(struct ndr_pu
 		}
 		NDR_CHECK(ndr_push_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
 		NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->in.level));
-		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+		if (r->in.name == NULL) {
+			return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer");
+		}
+		NDR_CHECK(ndr_push_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
 	}
 	if (flags & NDR_OUT) {
 		if (r->out.idx == NULL) {
@@ -10023,6 +10039,7 @@ static enum ndr_err_code ndr_push_samr_GetDisplayEnumerationIndex2(struct ndr_pu
 static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex2(struct ndr_pull *ndr, int flags, struct samr_GetDisplayEnumerationIndex2 *r)
 {
 	TALLOC_CTX *_mem_save_domain_handle_0;
+	TALLOC_CTX *_mem_save_name_0;
 	TALLOC_CTX *_mem_save_idx_0;
 	if (flags & NDR_IN) {
 		ZERO_STRUCT(r->out);
@@ -10035,7 +10052,13 @@ static enum ndr_err_code ndr_pull_samr_GetDisplayEnumerationIndex2(struct ndr_pu
 		NDR_CHECK(ndr_pull_policy_handle(ndr, NDR_SCALARS, r->in.domain_handle));
 		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_domain_handle_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->in.level));
-		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.name));
+		if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) {
+			NDR_PULL_ALLOC(ndr, r->in.name);
+		}
+		_mem_save_name_0 = NDR_PULL_GET_MEM_CTX(ndr);
+		NDR_PULL_SET_MEM_CTX(ndr, r->in.name, LIBNDR_FLAG_REF_ALLOC);
+		NDR_CHECK(ndr_pull_lsa_String(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.name));
+		NDR_PULL_SET_MEM_CTX(ndr, _mem_save_name_0, LIBNDR_FLAG_REF_ALLOC);
 		NDR_PULL_ALLOC(ndr, r->out.idx);
 		ZERO_STRUCTP(r->out.idx);
 	}
@@ -10067,7 +10090,10 @@ _PUBLIC_ void ndr_print_samr_GetDisplayEnumerationIndex2(struct ndr_print *ndr,
 		ndr_print_policy_handle(ndr, "domain_handle", r->in.domain_handle);
 		ndr->depth--;
 		ndr_print_uint16(ndr, "level", r->in.level);
-		ndr_print_lsa_String(ndr, "name", &r->in.name);
+		ndr_print_ptr(ndr, "name", r->in.name);
+		ndr->depth++;
+		ndr_print_lsa_String(ndr, "name", r->in.name);
+		ndr->depth--;
 		ndr->depth--;
 	}
 	if (flags & NDR_OUT) {
diff --git a/source/librpc/gen_ndr/samr.h b/source/librpc/gen_ndr/samr.h
index 37e27aa..522c6a9 100644
--- a/source/librpc/gen_ndr/samr.h
+++ b/source/librpc/gen_ndr/samr.h
@@ -1358,7 +1358,7 @@ struct samr_GetDisplayEnumerationIndex {
 	struct {
 		struct policy_handle *domain_handle;/* [ref] */
 		uint16_t level;
-		struct lsa_String name;
+		struct lsa_String *name;/* [ref] */
 	} in;
 
 	struct {
@@ -1470,7 +1470,7 @@ struct samr_GetDisplayEnumerationIndex2 {
 	struct {
 		struct policy_handle *domain_handle;/* [ref] */
 		uint16_t level;
-		struct lsa_String name;
+		struct lsa_String *name;/* [ref] */
 	} in;
 
 	struct {
diff --git a/source/librpc/idl/samr.idl b/source/librpc/idl/samr.idl
index 401de96..e823d1d 100644
--- a/source/librpc/idl/samr.idl
+++ b/source/librpc/idl/samr.idl
@@ -1019,7 +1019,7 @@ import "misc.idl", "lsa.idl", "security.idl";
 	NTSTATUS samr_GetDisplayEnumerationIndex(
 		[in,ref]    policy_handle *domain_handle,
 		[in]        uint16 level,
-		[in]        lsa_String name,
+		[in,ref]    lsa_String *name,
 		[out,ref]   uint32 *idx
 		);
 
@@ -1117,7 +1117,7 @@ import "misc.idl", "lsa.idl", "security.idl";
 	NTSTATUS samr_GetDisplayEnumerationIndex2(
 		[in,ref]    policy_handle *domain_handle,
 		[in]        uint16 level,
-		[in]        lsa_String name,
+		[in,ref]    lsa_String *name,
 		[out,ref]   uint32 *idx
 		);
 
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 4a820cd..9220c20 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -2566,6 +2566,67 @@ static NTSTATUS cmd_samr_chgpasswd3(struct rpc_pipe_client *cli,
 	return result;
 }
 
+static NTSTATUS cmd_samr_get_dispinfo_idx(struct rpc_pipe_client *cli,
+					  TALLOC_CTX *mem_ctx,
+					  int argc, const char **argv)
+{
+	NTSTATUS status;
+	struct policy_handle connect_handle;
+	struct policy_handle domain_handle;
+	uint16_t level = 1;
+	struct lsa_String name;
+	uint32_t idx = 0;
+
+	if (argc < 2 || argc > 3) {
+		printf("Usage: %s name level\n", argv[0]);
+		return NT_STATUS_INVALID_PARAMETER;
+	}
+
+	init_lsa_String(&name, argv[1]);
+
+	if (argc == 3) {
+		level = atoi(argv[2]);
+	}
+
+	status = rpccli_try_samr_connects(cli, mem_ctx,
+					  SEC_RIGHTS_MAXIMUM_ALLOWED,
+					  &connect_handle);
+
+	if (!NT_STATUS_IS_OK(status)) {
+		goto done;
+	}
+
+	status = rpccli_samr_OpenDomain(cli, mem_ctx,
+					&connect_handle,
+					SEC_RIGHTS_MAXIMUM_ALLOWED,
+					&domain_sid,
+					&domain_handle);
+
+	if (!NT_STATUS_IS_OK(status))
+		goto done;
+
+
+	status = rpccli_samr_GetDisplayEnumerationIndex(cli, mem_ctx,
+							&domain_handle,
+							level,
+							&name,
+							&idx);
+
+	if (NT_STATUS_IS_OK(status)) {
+		printf("idx: %d\n", idx);
+	}
+ done:
+
+	if (is_valid_policy_hnd(&domain_handle)) {
+		rpccli_samr_Close(cli, mem_ctx, &domain_handle);
+	}
+	if (is_valid_policy_hnd(&connect_handle)) {
+		rpccli_samr_Close(cli, mem_ctx, &connect_handle);
+	}
+
+	return status;
+
+}
 /* List of commands exported by this module */
 
 struct cmd_set samr_commands[] = {
@@ -2603,5 +2664,6 @@ struct cmd_set samr_commands[] = {
 	{ "lookupdomain",       RPC_RTYPE_NTSTATUS, cmd_samr_lookup_domain,         NULL, PI_SAMR, NULL, "Lookup Domain Name", "" },
 	{ "chgpasswd2",         RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd2,            NULL, PI_SAMR, NULL, "Change user password", "" },
 	{ "chgpasswd3",         RPC_RTYPE_NTSTATUS, cmd_samr_chgpasswd3,            NULL, PI_SAMR, NULL, "Change user password", "" },
+	{ "getdispinfoidx",     RPC_RTYPE_NTSTATUS, cmd_samr_get_dispinfo_idx,      NULL, PI_SAMR, NULL, "Get Display Information Index", "" },
 	{ NULL }
 };


-- 
Samba Shared Repository


More information about the samba-cvs mailing list