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 */
