/* lsa_OpenPolicy a wrapper around lsa_OpenPolicy2 */ NTSTATUS dcesrv_lsa_OpenPolicy(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_OpenPolicy *r) { struct lsa_OpenPolicy2 r2; r2.in.system_name = NULL; r2.in.attr = r->in.attr; r2.in.access_mask = r->in.access_mask; r2.out.handle = r->out.handle; return dcesrv_lsa_OpenPolicy2(dce_call, mem_ctx, &r2); }
/* lsa_LookupSids3 Identical to LookupSids2, but doesn't take a policy handle */ NTSTATUS dcesrv_lsa_LookupSids3(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_LookupSids3 *r) { struct lsa_LookupSids2 r2; struct lsa_OpenPolicy2 pol; NTSTATUS status; struct dcesrv_handle *h; ZERO_STRUCT(r2); /* No policy handle on the wire, so make one up here */ r2.in.handle = talloc(mem_ctx, struct policy_handle); if (!r2.in.handle) { return NT_STATUS_NO_MEMORY; } pol.out.handle = r2.in.handle; pol.in.access_mask = SEC_FLAG_MAXIMUM_ALLOWED; pol.in.attr = NULL; pol.in.system_name = NULL; status = dcesrv_lsa_OpenPolicy2(dce_call, mem_ctx, &pol); if (!NT_STATUS_IS_OK(status)) { return status; } /* ensure this handle goes away at the end of this call */ DCESRV_PULL_HANDLE(h, r2.in.handle, LSA_HANDLE_POLICY); talloc_steal(mem_ctx, h); r2.in.sids = r->in.sids; r2.in.names = r->in.names; r2.in.level = r->in.level; r2.in.count = r->in.count; r2.in.lookup_options = r->in.lookup_options; r2.in.client_revision = r->in.client_revision; r2.out.count = r->out.count; r2.out.names = r->out.names; r2.out.domains = r->out.domains; status = dcesrv_lsa_LookupSids2(dce_call, mem_ctx, &r2); r->out.domains = r2.out.domains; r->out.names = r2.out.names; r->out.count = r2.out.count; return status; }
/* lsa_OpenPolicy a wrapper around lsa_OpenPolicy2 */ NTSTATUS dcesrv_lsa_OpenPolicy(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct lsa_OpenPolicy *r) { enum dcerpc_transport_t transport = dce_call->conn->endpoint->ep_description->transport; struct lsa_OpenPolicy2 r2; if (transport != NCACN_NP && transport != NCALRPC) { DCESRV_FAULT(DCERPC_FAULT_ACCESS_DENIED); } r2.in.system_name = NULL; r2.in.attr = r->in.attr; r2.in.access_mask = r->in.access_mask; r2.out.handle = r->out.handle; return dcesrv_lsa_OpenPolicy2(dce_call, mem_ctx, &r2); }