[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