r11288: Fill out LSA LookupNames4 and LookupSids3, including a server-side
authorAndrew Bartlett <abartlet@samba.org>
Tue, 25 Oct 2005 12:15:29 +0000 (12:15 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:45:14 +0000 (13:45 -0500)
implementation.

Andrew Bartlett

source/librpc/idl/lsa.idl
source/rpc_server/lsa/dcesrv_lsa.c

index 5ff4214cbbdf3ddd45d9fb5cf7ce29fd836b9fb3..8a141bcd541c185c47e29c74058fd34d7b91c930 100644 (file)
                );
 
        /* Function 0x4d */
-       NTSTATUS lsa_LSARLOOKUPNAMES4();
+       NTSTATUS lsa_LookupNames4(
+               [in,range(0,1000)] uint32 num_names,
+               [in,size_is(num_names)]  lsa_String names[],
+               [out,unique]        lsa_RefDomainList *domains,
+               [in,out] lsa_TransSidArray3 *sids,
+               [in]         uint16 level,
+               [in,out] uint32 *count,
+               [in]         uint32 unknown1,
+               [in]         uint32 unknown2
+               );
 
        /* Function 0x4e */
        NTSTATUS lsa_LSAROPENPOLICYSCE();
index ca107adfbbc2c0d9a5d1b403ed56f72a90055774..ca6fe36786b1ed8bb5d8aacedc9fe07601ee5d12 100644 (file)
@@ -2515,23 +2515,18 @@ static NTSTATUS lsa_lookup_name(struct lsa_policy_state *state, TALLOC_CTX *mem_
 
 
 /*
-  lsa_LookupNames3
+  lsa_LookupNames4
 */
-static NTSTATUS lsa_LookupNames3(struct dcesrv_call_state *dce_call,
+static NTSTATUS lsa_LookupNames4(struct dcesrv_call_state *dce_call,
                                 TALLOC_CTX *mem_ctx,
-                                struct lsa_LookupNames3 *r)
+                                struct lsa_LookupNames4 *r)
 {
        struct lsa_policy_state *state;
-       struct dcesrv_handle *h;
        int i;
        NTSTATUS status = NT_STATUS_OK;
 
        r->out.domains = NULL;
 
-       DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
-
-       state = h->data;
-
        r->out.domains = talloc_zero(mem_ctx,  struct lsa_RefDomainList);
        if (r->out.domains == NULL) {
                return NT_STATUS_NO_MEMORY;
@@ -2590,6 +2585,35 @@ static NTSTATUS lsa_LookupNames3(struct dcesrv_call_state *dce_call,
        return status;
 }
 
+/* 
+  lsa_LookupNames3
+*/
+static NTSTATUS lsa_LookupNames3(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                                struct lsa_LookupNames3 *r)
+{
+       struct lsa_LookupNames4 r2;
+       NTSTATUS status;
+       struct dcesrv_handle *h;
+       DCESRV_PULL_HANDLE(h, r->in.handle, LSA_HANDLE_POLICY);
+       
+       r2.in.num_names = r->in.num_names;
+       r2.in.names = r->in.names;
+       r2.in.sids = r->in.sids;
+       r2.in.count = r->in.count;
+       r2.in.unknown1 = r->in.unknown1;
+       r2.in.unknown2 = r->in.unknown2;
+       
+       status = lsa_LookupNames4(dce_call, mem_ctx, &r2);
+       if (dce_call->fault_code != 0) {
+               return status;
+       }
+       
+       r->out.domains = r2.out.domains;
+       r->out.sids = r2.out.sids;
+       r->out.count = r2.out.count;
+       return status;
+}
+
 /*
   lsa_LookupNames2
 */
@@ -2861,15 +2885,6 @@ static NTSTATUS lsa_CREDRRENAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *
 }
 
 
-/* 
-  lsa_LSARLOOKUPNAMES4 
-*/
-static NTSTATUS lsa_LSARLOOKUPNAMES4(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct lsa_LSARLOOKUPNAMES4 *r)
-{
-       DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
-}
-
 
 /* 
   lsa_LSAROPENPOLICYSCE