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 <[EMAIL PROTECTED]>
Date:   Tue Apr 22 23:11:53 2008 +0200

    rpcclient: Add getdispinfoidx command.
    
    Guenther

commit c92b585cc42ba9f42727512c08c896ee40e5e319
Author: Günther Deschner <[EMAIL PROTECTED]>
Date:   Tue Apr 22 23:11:21 2008 +0200

    IDL: rerun make idl.
    
    Guenther

commit cb0b0fd2684b63257421aba599f9d2111c0438bf
Author: Günther Deschner <[EMAIL PROTECTED]>
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

Reply via email to