The branch, master has been updated
       via  b8834cad073e6b8ffb8eb8b7d731c40048d847ec (commit)
       via  2f9adf04e4b3e16c046cb371a428a8a70d5de041 (commit)
       via  ff968712bab6c2635ef74723c6f52b0fdac4b424 (commit)
      from  fde8c46855350111e94f1da7afc6c440ab746d8b (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit b8834cad073e6b8ffb8eb8b7d731c40048d847ec
Author: Günther Deschner <[email protected]>
Date:   Mon Sep 14 06:47:37 2009 +0200

    schannel: remove unused schannel structs.
    
    Guenther

commit 2f9adf04e4b3e16c046cb371a428a8a70d5de041
Author: Günther Deschner <[email protected]>
Date:   Sun Sep 13 00:28:49 2009 +0200

    s3-rpc_client: add rpccli_lsa_lookup_sids3 wrapper.
    
    Guenther

commit ff968712bab6c2635ef74723c6f52b0fdac4b424
Author: Günther Deschner <[email protected]>
Date:   Fri Sep 11 19:35:14 2009 +0200

    s3-rpc_client: add rpccli_lsa_lookup_names4 wrapper.
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/ndr_schannel.c   |  272 ---------------------------------------
 librpc/gen_ndr/ndr_schannel.h   |    9 --
 librpc/gen_ndr/schannel.h       |   29 ----
 librpc/idl/schannel.idl         |   34 -----
 source3/include/proto.h         |   17 +++
 source3/rpc_client/cli_lsarpc.c |  189 +++++++++++++++++++++------
 6 files changed, 166 insertions(+), 384 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_schannel.c b/librpc/gen_ndr/ndr_schannel.c
index 4bbb56a..e9adcf6 100644
--- a/librpc/gen_ndr/ndr_schannel.c
+++ b/librpc/gen_ndr/ndr_schannel.c
@@ -5,278 +5,6 @@
 
 #include "librpc/gen_ndr/ndr_netlogon.h"
 #include "librpc/gen_ndr/ndr_nbt.h"
-static enum ndr_err_code ndr_push_schannel_bind_3(struct ndr_push *ndr, int 
ndr_flags, const struct schannel_bind_3 *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_push_align(ndr, 4));
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->domain));
-                       ndr->flags = _flags_save_string;
-               }
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, 
r->workstation));
-                       ndr->flags = _flags_save_string;
-               }
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_schannel_bind_3(struct ndr_pull *ndr, int 
ndr_flags, struct schannel_bind_3 *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_pull_align(ndr, 4));
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, 
&r->domain));
-                       ndr->flags = _flags_save_string;
-               }
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, 
&r->workstation));
-                       ndr->flags = _flags_save_string;
-               }
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_schannel_bind_3(struct ndr_print *ndr, const char 
*name, const struct schannel_bind_3 *r)
-{
-       ndr_print_struct(ndr, name, "schannel_bind_3");
-       ndr->depth++;
-       ndr_print_string(ndr, "domain", r->domain);
-       ndr_print_string(ndr, "workstation", r->workstation);
-       ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_schannel_bind_23(struct ndr_push *ndr, int 
ndr_flags, const struct schannel_bind_23 *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_push_align(ndr, 4));
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->domain));
-                       ndr->flags = _flags_save_string;
-               }
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, 
r->workstation));
-                       ndr->flags = _flags_save_string;
-               }
-               NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS, r->dnsdomain));
-               NDR_CHECK(ndr_push_nbt_string(ndr, NDR_SCALARS, 
r->dnsworkstation));
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_schannel_bind_23(struct ndr_pull *ndr, int 
ndr_flags, struct schannel_bind_23 *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_pull_align(ndr, 4));
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, 
&r->domain));
-                       ndr->flags = _flags_save_string;
-               }
-               {
-                       uint32_t _flags_save_string = ndr->flags;
-                       ndr_set_flags(&ndr->flags, 
LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM);
-                       NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, 
&r->workstation));
-                       ndr->flags = _flags_save_string;
-               }
-               NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS, &r->dnsdomain));
-               NDR_CHECK(ndr_pull_nbt_string(ndr, NDR_SCALARS, 
&r->dnsworkstation));
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_schannel_bind_23(struct ndr_print *ndr, const char 
*name, const struct schannel_bind_23 *r)
-{
-       ndr_print_struct(ndr, name, "schannel_bind_23");
-       ndr->depth++;
-       ndr_print_string(ndr, "domain", r->domain);
-       ndr_print_string(ndr, "workstation", r->workstation);
-       ndr_print_nbt_string(ndr, "dnsdomain", r->dnsdomain);
-       ndr_print_nbt_string(ndr, "dnsworkstation", r->dnsworkstation);
-       ndr->depth--;
-}
-
-static enum ndr_err_code ndr_push_schannel_bind_info(struct ndr_push *ndr, int 
ndr_flags, const union schannel_bind_info *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               int level = ndr_push_get_switch_value(ndr, r);
-               switch (level) {
-                       case 3: {
-                               NDR_CHECK(ndr_push_schannel_bind_3(ndr, 
NDR_SCALARS, &r->info3));
-                       break; }
-
-                       case 23: {
-                               NDR_CHECK(ndr_push_schannel_bind_23(ndr, 
NDR_SCALARS, &r->info23));
-                       break; }
-
-                       default:
-                               return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, 
"Bad switch value %u at %s", level, __location__);
-               }
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-               int level = ndr_push_get_switch_value(ndr, r);
-               switch (level) {
-                       case 3:
-                       break;
-
-                       case 23:
-                       break;
-
-                       default:
-                               return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, 
"Bad switch value %u at %s", level, __location__);
-               }
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-static enum ndr_err_code ndr_pull_schannel_bind_info(struct ndr_pull *ndr, int 
ndr_flags, union schannel_bind_info *r)
-{
-       int level;
-       level = ndr_pull_get_switch_value(ndr, r);
-       if (ndr_flags & NDR_SCALARS) {
-               switch (level) {
-                       case 3: {
-                               NDR_CHECK(ndr_pull_schannel_bind_3(ndr, 
NDR_SCALARS, &r->info3));
-                       break; }
-
-                       case 23: {
-                               NDR_CHECK(ndr_pull_schannel_bind_23(ndr, 
NDR_SCALARS, &r->info23));
-                       break; }
-
-                       default:
-                               return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, 
"Bad switch value %u at %s", level, __location__);
-               }
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-               switch (level) {
-                       case 3:
-                       break;
-
-                       case 23:
-                       break;
-
-                       default:
-                               return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, 
"Bad switch value %u at %s", level, __location__);
-               }
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_schannel_bind_info(struct ndr_print *ndr, const char 
*name, const union schannel_bind_info *r)
-{
-       int level;
-       level = ndr_print_get_switch_value(ndr, r);
-       ndr_print_union(ndr, name, level, "schannel_bind_info");
-       switch (level) {
-               case 3:
-                       ndr_print_schannel_bind_3(ndr, "info3", &r->info3);
-               break;
-
-               case 23:
-                       ndr_print_schannel_bind_23(ndr, "info23", &r->info23);
-               break;
-
-               default:
-                       ndr_print_bad_level(ndr, name, level);
-       }
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_schannel_bind(struct ndr_push *ndr, int 
ndr_flags, const struct schannel_bind *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_push_align(ndr, 4));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->bind_type));
-               NDR_CHECK(ndr_push_set_switch_value(ndr, &r->u, r->bind_type));
-               NDR_CHECK(ndr_push_schannel_bind_info(ndr, NDR_SCALARS, &r->u));
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_schannel_bind(struct ndr_pull *ndr, int 
ndr_flags, struct schannel_bind *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_pull_align(ndr, 4));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->bind_type));
-               NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->u, r->bind_type));
-               NDR_CHECK(ndr_pull_schannel_bind_info(ndr, NDR_SCALARS, &r->u));
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_schannel_bind(struct ndr_print *ndr, const char *name, 
const struct schannel_bind *r)
-{
-       ndr_print_struct(ndr, name, "schannel_bind");
-       ndr->depth++;
-       ndr_print_uint32(ndr, "unknown1", r->unknown1);
-       ndr_print_uint32(ndr, "bind_type", r->bind_type);
-       ndr_print_set_switch_value(ndr, &r->u, r->bind_type);
-       ndr_print_schannel_bind_info(ndr, "u", &r->u);
-       ndr->depth--;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_push_schannel_bind_ack(struct ndr_push *ndr, 
int ndr_flags, const struct schannel_bind_ack *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_push_align(ndr, 4));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown1));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown2));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->unknown3));
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ enum ndr_err_code ndr_pull_schannel_bind_ack(struct ndr_pull *ndr, 
int ndr_flags, struct schannel_bind_ack *r)
-{
-       if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_pull_align(ndr, 4));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown1));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown2));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->unknown3));
-       }
-       if (ndr_flags & NDR_BUFFERS) {
-       }
-       return NDR_ERR_SUCCESS;
-}
-
-_PUBLIC_ void ndr_print_schannel_bind_ack(struct ndr_print *ndr, const char 
*name, const struct schannel_bind_ack *r)
-{
-       ndr_print_struct(ndr, name, "schannel_bind_ack");
-       ndr->depth++;
-       ndr_print_uint32(ndr, "unknown1", r->unknown1);
-       ndr_print_uint32(ndr, "unknown2", r->unknown2);
-       ndr_print_uint32(ndr, "unknown3", r->unknown3);
-       ndr->depth--;
-}
-
 _PUBLIC_ enum ndr_err_code ndr_push_netlogon_creds_CredentialState(struct 
ndr_push *ndr, int ndr_flags, const struct netlogon_creds_CredentialState *r)
 {
        {
diff --git a/librpc/gen_ndr/ndr_schannel.h b/librpc/gen_ndr/ndr_schannel.h
index ed40933..63ee1e4 100644
--- a/librpc/gen_ndr/ndr_schannel.h
+++ b/librpc/gen_ndr/ndr_schannel.h
@@ -8,15 +8,6 @@
 
 #include "../librpc/ndr/ndr_schannel.h"
 #define NDR_SCHANNEL_CALL_COUNT (0)
-void ndr_print_schannel_bind_3(struct ndr_print *ndr, const char *name, const 
struct schannel_bind_3 *r);
-void ndr_print_schannel_bind_23(struct ndr_print *ndr, const char *name, const 
struct schannel_bind_23 *r);
-void ndr_print_schannel_bind_info(struct ndr_print *ndr, const char *name, 
const union schannel_bind_info *r);
-enum ndr_err_code ndr_push_schannel_bind(struct ndr_push *ndr, int ndr_flags, 
const struct schannel_bind *r);
-enum ndr_err_code ndr_pull_schannel_bind(struct ndr_pull *ndr, int ndr_flags, 
struct schannel_bind *r);
-void ndr_print_schannel_bind(struct ndr_print *ndr, const char *name, const 
struct schannel_bind *r);
-enum ndr_err_code ndr_push_schannel_bind_ack(struct ndr_push *ndr, int 
ndr_flags, const struct schannel_bind_ack *r);
-enum ndr_err_code ndr_pull_schannel_bind_ack(struct ndr_pull *ndr, int 
ndr_flags, struct schannel_bind_ack *r);
-void ndr_print_schannel_bind_ack(struct ndr_print *ndr, const char *name, 
const struct schannel_bind_ack *r);
 enum ndr_err_code ndr_push_netlogon_creds_CredentialState(struct ndr_push 
*ndr, int ndr_flags, const struct netlogon_creds_CredentialState *r);
 enum ndr_err_code ndr_pull_netlogon_creds_CredentialState(struct ndr_pull 
*ndr, int ndr_flags, struct netlogon_creds_CredentialState *r);
 void ndr_print_netlogon_creds_CredentialState(struct ndr_print *ndr, const 
char *name, const struct netlogon_creds_CredentialState *r);
diff --git a/librpc/gen_ndr/schannel.h b/librpc/gen_ndr/schannel.h
index 6a85af2..c07212f 100644
--- a/librpc/gen_ndr/schannel.h
+++ b/librpc/gen_ndr/schannel.h
@@ -9,35 +9,6 @@
 #ifndef _HEADER_schannel
 #define _HEADER_schannel
 
-struct schannel_bind_3 {
-       const char * domain;/* 
[flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-       const char * workstation;/* 
[flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-};
-
-struct schannel_bind_23 {
-       const char * domain;/* 
[flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-       const char * workstation;/* 
[flag(LIBNDR_FLAG_STR_ASCII|LIBNDR_FLAG_STR_NULLTERM)] */
-       const char * dnsdomain;
-       const char * dnsworkstation;
-};
-
-union schannel_bind_info {
-       struct schannel_bind_3 info3;/* [case(3)] */
-       struct schannel_bind_23 info23;/* [case(23)] */
-}/* [nodiscriminant] */;
-
-struct schannel_bind {
-       uint32_t unknown1;
-       uint32_t bind_type;
-       union schannel_bind_info u;/* [switch_is(bind_type)] */
-}/* [public] */;
-
-struct schannel_bind_ack {
-       uint32_t unknown1;
-       uint32_t unknown2;
-       uint32_t unknown3;
-}/* [public] */;
-
 struct netlogon_creds_CredentialState {
        uint32_t negotiate_flags;
        uint8_t session_key[16];
diff --git a/librpc/idl/schannel.idl b/librpc/idl/schannel.idl
index d9b230d..a30e292 100644
--- a/librpc/idl/schannel.idl
+++ b/librpc/idl/schannel.idl
@@ -12,40 +12,6 @@ import "netlogon.idl", "nbt.idl";
 ]
 interface schannel
 {
-       /*
-         a schannel bind blob - used in dcerpc auth_info
-         on a schannel
-       */
-       typedef struct {
-               astring domain;
-               astring workstation;
-       } schannel_bind_3;
-
-       typedef struct {
-               astring domain;
-               astring workstation;
-               nbt_string dnsdomain;
-               nbt_string dnsworkstation;
-       } schannel_bind_23;
-
-       typedef [nodiscriminant] union {
-               [case (3)]  schannel_bind_3  info3;
-               [case (23)] schannel_bind_23 info23;
-       } schannel_bind_info;
-
-       typedef [public] struct {
-               uint32 unknown1; /* seems to need to be 0 */
-               uint32 bind_type;
-               [switch_is(bind_type)] schannel_bind_info u;
-       } schannel_bind;
-
-       /* a bind_ack blob */
-       typedef [public] struct {
-               uint32 unknown1; /* 1 */
-               uint32 unknown2; /* 0 */
-               uint32 unknown3; /* 0x006c0000 */
-       } schannel_bind_ack;
-
        /* this structure is used internally in the NETLOGON server */
 
        typedef [public,flag(NDR_PAHEX)] struct {
diff --git a/source3/include/proto.h b/source3/include/proto.h
index abc76e8..5da13ca 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -5203,6 +5203,14 @@ NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client 
*cli,
                                char ***pdomains,
                                char ***pnames,
                                enum lsa_SidType **ptypes);
+NTSTATUS rpccli_lsa_lookup_sids3(struct rpc_pipe_client *cli,
+                                TALLOC_CTX *mem_ctx,
+                                struct policy_handle *pol,
+                                int num_sids,
+                                const DOM_SID *sids,
+                                char ***pdomains,
+                                char ***pnames,
+                                enum lsa_SidType **ptypes);
 NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client *cli,
                                 TALLOC_CTX *mem_ctx,
                                 struct policy_handle *pol, int num_names,
@@ -5211,6 +5219,15 @@ NTSTATUS rpccli_lsa_lookup_names(struct rpc_pipe_client 
*cli,
                                 int level,
                                 DOM_SID **sids,
                                 enum lsa_SidType **types);
+NTSTATUS rpccli_lsa_lookup_names4(struct rpc_pipe_client *cli,
+                                 TALLOC_CTX *mem_ctx,
+                                 struct policy_handle *pol, int num_names,
+                                 const char **names,
+                                 const char ***dom_names,
+                                 int level,
+                                 DOM_SID **sids,
+                                 enum lsa_SidType **types);
+
 bool fetch_domain_sid( char *domain, char *remote_machine, DOM_SID *psid);
 
 /* The following definitions come from rpc_client/cli_netlogon.c  */
diff --git a/source3/rpc_client/cli_lsarpc.c b/source3/rpc_client/cli_lsarpc.c
index 68fd96f..aa883d3 100644
--- a/source3/rpc_client/cli_lsarpc.c
+++ b/source3/rpc_client/cli_lsarpc.c
@@ -114,7 +114,8 @@ static NTSTATUS rpccli_lsa_lookup_sids_noalloc(struct 
rpc_pipe_client *cli,
                                               const DOM_SID *sids,
                                               char **domains,
                                               char **names,
-                                              enum lsa_SidType *types)
+                                              enum lsa_SidType *types,
+                                              bool use_lookupsids3)
 {
        NTSTATUS result = NT_STATUS_OK;
        TALLOC_CTX *tmp_ctx = NULL;
@@ -147,13 +148,41 @@ static NTSTATUS rpccli_lsa_lookup_sids_noalloc(struct 
rpc_pipe_client *cli,
                }
        }
 
-       result = rpccli_lsa_LookupSids(cli, mem_ctx,
-                                      pol,
-                                      &sid_array,
-                                      &ref_domains,
-                                      &lsa_names,
-                                      level,
-                                      &count);
+       if (use_lookupsids3) {
+               struct lsa_TransNameArray2 lsa_names2;
+               uint32_t n;
+
+               result = rpccli_lsa_LookupSids3(cli, mem_ctx,
+                                               &sid_array,
+                                               &ref_domains,
+                                               &lsa_names2,
+                                               level,
+                                               &count,
+                                               0,
+                                               0);
+
+               if (!NT_STATUS_IS_ERR(result)) {
+                       lsa_names.count = lsa_names2.count;
+                       lsa_names.names = talloc_array(mem_ctx, struct 
lsa_TranslatedName, lsa_names.count);
+                       if (!lsa_names.names) {
+                               return NT_STATUS_NO_MEMORY;
+                       }
+                       for (n=0; n < lsa_names.count; n++) {
+                               lsa_names.names[n].sid_type     = 
lsa_names2.names[n].sid_type;
+                               lsa_names.names[n].name         = 
lsa_names2.names[n].name;
+                               lsa_names.names[n].sid_index    = 
lsa_names2.names[n].sid_index;
+                       }
+               }
+
+       } else {
+               result = rpccli_lsa_LookupSids(cli, mem_ctx,
+                                              pol,
+                                              &sid_array,
+                                              &ref_domains,
+                                              &lsa_names,
+                                              level,
+                                              &count);
+       }
 
        DEBUG(10, ("LSA_LOOKUPSIDS returned '%s', mapped count = %d'\n",
                   nt_errstr(result), count));
@@ -233,14 +262,15 @@ done:
  * at 20480 for win2k3, but we keep it at a save 1000 for now. */
 #define LOOKUP_SIDS_HUNK_SIZE 1000
 
-NTSTATUS rpccli_lsa_lookup_sids(struct rpc_pipe_client *cli,
-                               TALLOC_CTX *mem_ctx,
-                               struct policy_handle *pol,
-                               int num_sids,
-                               const DOM_SID *sids,
-                               char ***pdomains,
-                               char ***pnames,
-                               enum lsa_SidType **ptypes)
+static NTSTATUS rpccli_lsa_lookup_sids_generic(struct rpc_pipe_client *cli,
+                                              TALLOC_CTX *mem_ctx,


-- 
Samba Shared Repository

Reply via email to