1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-12 09:18:10 +03:00

r11288: Fill out LSA LookupNames4 and LookupSids3, including a server-side

implementation.

Andrew Bartlett
This commit is contained in:
Andrew Bartlett 2005-10-25 12:15:29 +00:00 committed by Gerald (Jerry) Carter
parent e15e39866e
commit a6a615cc99
2 changed files with 42 additions and 18 deletions

View File

@ -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();

View 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