Author: abartlet
Date: 2005-10-25 12:15:29 +0000 (Tue, 25 Oct 2005)
New Revision: 11288

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=11288

Log:
Fill out LSA LookupNames4 and LookupSids3, including a server-side
implementation.

Andrew Bartlett

Modified:
   branches/SAMBA_4_0/source/librpc/idl/lsa.idl
   branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/idl/lsa.idl
===================================================================
--- branches/SAMBA_4_0/source/librpc/idl/lsa.idl        2005-10-25 12:14:08 UTC 
(rev 11287)
+++ branches/SAMBA_4_0/source/librpc/idl/lsa.idl        2005-10-25 12:15:29 UTC 
(rev 11288)
@@ -930,7 +930,16 @@
                );
 
        /* 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();

Modified: branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c
===================================================================
--- branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c       2005-10-25 
12:14:08 UTC (rev 11287)
+++ branches/SAMBA_4_0/source/rpc_server/lsa/dcesrv_lsa.c       2005-10-25 
12:15:29 UTC (rev 11288)
@@ -2515,23 +2515,18 @@
 
 
 /*
-  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 @@
        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,16 +2885,7 @@
 }
 
 
-/* 
-  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 
 */

Reply via email to