/* This is the implementation of the lsa server code. */
#include "includes.h"
+#include "../librpc/gen_ndr/srv_lsa.h"
+#include "secrets.h"
#undef DBGC_CLASS
#define DBGC_CLASS DBGC_RPC_SRV
enum lsa_handle_type { LSA_HANDLE_POLICY_TYPE = 1, LSA_HANDLE_ACCOUNT_TYPE };
struct lsa_info {
- DOM_SID sid;
+ struct dom_sid sid;
+ const char *name;
uint32 access;
enum lsa_handle_type type;
+ struct security_descriptor *sd;
};
const struct generic_mapping lsa_account_mapping = {
LSA_POLICY_ALL_ACCESS
};
+const struct generic_mapping lsa_secret_mapping = {
+ LSA_SECRET_READ,
+ LSA_SECRET_WRITE,
+ LSA_SECRET_EXECUTE,
+ LSA_SECRET_ALL_ACCESS
+};
+
+const struct generic_mapping lsa_trusted_domain_mapping = {
+ LSA_TRUSTED_DOMAIN_READ,
+ LSA_TRUSTED_DOMAIN_WRITE,
+ LSA_TRUSTED_DOMAIN_EXECUTE,
+ LSA_TRUSTED_DOMAIN_ALL_ACCESS
+};
+
/***************************************************************************
init_lsa_ref_domain_list - adds a domain if it's not already in, returns the index.
***************************************************************************/
static int init_lsa_ref_domain_list(TALLOC_CTX *mem_ctx,
struct lsa_RefDomainList *ref,
const char *dom_name,
- DOM_SID *dom_sid)
+ struct dom_sid *dom_sid)
{
int num = 0;
static void init_dom_query_3(struct lsa_DomainInfo *r,
const char *name,
- DOM_SID *sid)
+ struct dom_sid *sid)
{
init_lsa_StringLarge(&r->name, name);
r->sid = sid;
static void init_dom_query_5(struct lsa_DomainInfo *r,
const char *name,
- DOM_SID *sid)
+ struct dom_sid *sid)
{
init_lsa_StringLarge(&r->name, name);
r->sid = sid;
*pmapped_count = 0;
for (i = 0; i < num_entries; i++) {
- DOM_SID sid;
+ struct dom_sid sid;
uint32 rid;
int dom_idx;
const char *full_name;
/* Split name into domain and user component */
- full_name = name[i].string;
- if (full_name == NULL) {
- return NT_STATUS_NO_MEMORY;
+ /* follow w2k8 behavior and return the builtin domain when no
+ * input has been passed in */
+
+ if (name[i].string) {
+ full_name = name[i].string;
+ } else {
+ full_name = "BUILTIN";
}
DEBUG(5, ("lookup_lsa_rids: looking up name %s\n", full_name));
dom_idx = -1;
if (type != SID_NAME_UNKNOWN) {
- sid_split_rid(&sid, &rid);
+ if (type == SID_NAME_DOMAIN) {
+ rid = (uint32_t)-1;
+ } else {
+ sid_split_rid(&sid, &rid);
+ }
dom_idx = init_lsa_ref_domain_list(mem_ctx, ref, domain, &sid);
mapped_count++;
}
*pmapped_count = 0;
for (i = 0; i < num_entries; i++) {
- DOM_SID sid;
+ struct dom_sid sid;
uint32 rid;
int dom_idx;
const char *full_name;
dom_idx = -1;
if (type != SID_NAME_UNKNOWN) {
- DOM_SID domain_sid;
+ struct dom_sid domain_sid;
sid_copy(&domain_sid, &sid);
sid_split_rid(&domain_sid, &rid);
dom_idx = init_lsa_ref_domain_list(mem_ctx, ref, domain, &domain_sid);
return NT_STATUS_OK;
}
-static NTSTATUS make_lsa_object_sd(TALLOC_CTX *mem_ctx, SEC_DESC **sd, size_t *sd_size,
+static NTSTATUS make_lsa_object_sd(TALLOC_CTX *mem_ctx, struct security_descriptor **sd, size_t *sd_size,
const struct generic_mapping *map,
- DOM_SID *sid, uint32_t sid_access)
+ struct dom_sid *sid, uint32_t sid_access)
{
- DOM_SID adm_sid;
- SEC_ACE ace[5];
+ struct dom_sid adm_sid;
+ struct security_ace ace[5];
size_t i = 0;
- SEC_ACL *psa = NULL;
+ struct security_acl *psa = NULL;
/* READ|EXECUTE access for Everyone */
SEC_ACE_TYPE_ACCESS_ALLOWED, map->generic_all, 0);
/* Add Full Access for Domain Admins */
- sid_copy(&adm_sid, get_global_sam_sid());
- sid_append_rid(&adm_sid, DOMAIN_GROUP_RID_ADMINS);
+ sid_compose(&adm_sid, get_global_sam_sid(), DOMAIN_RID_ADMINS);
init_sec_ace(&ace[i++], &adm_sid, SEC_ACE_TYPE_ACCESS_ALLOWED,
map->generic_all, 0);
_lsa_OpenPolicy2
***************************************************************************/
-NTSTATUS _lsa_OpenPolicy2(pipes_struct *p,
+NTSTATUS _lsa_OpenPolicy2(struct pipes_struct *p,
struct lsa_OpenPolicy2 *r)
{
struct lsa_info *info;
- SEC_DESC *psd = NULL;
+ struct security_descriptor *psd = NULL;
size_t sd_size;
uint32 des_access = r->in.access_mask;
uint32 acc_granted;
}
status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, des_access,
- &acc_granted, "_lsa_OpenPolicy2" );
-
+ NULL, 0, des_access,
+ &acc_granted, "_lsa_OpenPolicy2" );
if (!NT_STATUS_IS_OK(status)) {
return status;
}
_lsa_OpenPolicy
***************************************************************************/
-NTSTATUS _lsa_OpenPolicy(pipes_struct *p,
+NTSTATUS _lsa_OpenPolicy(struct pipes_struct *p,
struct lsa_OpenPolicy *r)
{
struct lsa_OpenPolicy2 o;
ufff, done :) mimir
***************************************************************************/
-NTSTATUS _lsa_EnumTrustDom(pipes_struct *p,
+NTSTATUS _lsa_EnumTrustDom(struct pipes_struct *p,
struct lsa_EnumTrustDom *r)
{
struct lsa_info *info;
- uint32 next_idx;
+ uint32_t count;
struct trustdom_info **domains;
- struct lsa_DomainInfo *lsa_domains = NULL;
+ struct lsa_DomainInfo *entries;
int i;
-
- /*
- * preferred length is set to 5 as a "our" preferred length
- * nt sets this parameter to 2
- * update (20.08.2002): it's not preferred length, but preferred size!
- * it needs further investigation how to optimally choose this value
- */
- uint32 max_num_domains =
- r->in.max_size < 5 ? r->in.max_size : 10;
- uint32 num_domains;
NTSTATUS nt_status;
- uint32 num_thistime;
if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&info))
return NT_STATUS_INVALID_HANDLE;
return NT_STATUS_ACCESS_DENIED;
become_root();
- nt_status = pdb_enum_trusteddoms(p->mem_ctx, &num_domains, &domains);
+ nt_status = pdb_enum_trusteddoms(p->mem_ctx, &count, &domains);
unbecome_root();
if (!NT_STATUS_IS_OK(nt_status)) {
return nt_status;
}
- if (*r->in.resume_handle < num_domains) {
- num_thistime = MIN(num_domains, max_num_domains);
-
- nt_status = STATUS_MORE_ENTRIES;
+ entries = TALLOC_ZERO_ARRAY(p->mem_ctx, struct lsa_DomainInfo, count);
+ if (!entries) {
+ return NT_STATUS_NO_MEMORY;
+ }
- if (*r->in.resume_handle + num_thistime > num_domains) {
- num_thistime = num_domains - *r->in.resume_handle;
- nt_status = NT_STATUS_OK;
- }
+ for (i=0; i<count; i++) {
+ init_lsa_StringLarge(&entries[i].name, domains[i]->name);
+ entries[i].sid = &domains[i]->sid;
+ }
- next_idx = *r->in.resume_handle + num_thistime;
- } else {
- num_thistime = 0;
- next_idx = 0xffffffff;
- nt_status = NT_STATUS_NO_MORE_ENTRIES;
+ if (*r->in.resume_handle >= count) {
+ *r->out.resume_handle = -1;
+ TALLOC_FREE(entries);
+ return NT_STATUS_NO_MORE_ENTRIES;
}
- /* set up the lsa_enum_trust_dom response */
+ /* return the rest, limit by max_size. Note that we
+ use the w2k3 element size value of 60 */
+ r->out.domains->count = count - *r->in.resume_handle;
+ r->out.domains->count = MIN(r->out.domains->count,
+ 1+(r->in.max_size/LSA_ENUM_TRUST_DOMAIN_MULTIPLIER));
- lsa_domains = TALLOC_ZERO_ARRAY(p->mem_ctx, struct lsa_DomainInfo,
- num_thistime);
- if (!lsa_domains) {
- return NT_STATUS_NO_MEMORY;
- }
+ r->out.domains->domains = entries + *r->in.resume_handle;
- for (i=0; i<num_thistime; i++) {
- init_lsa_StringLarge(&lsa_domains[i].name, domains[i]->name);
- lsa_domains[i].sid = &domains[i]->sid;
+ if (r->out.domains->count < count - *r->in.resume_handle) {
+ *r->out.resume_handle = *r->in.resume_handle + r->out.domains->count;
+ return STATUS_MORE_ENTRIES;
}
- *r->out.resume_handle = next_idx;
- r->out.domains->count = num_thistime;
- r->out.domains->domains = lsa_domains;
+ /* according to MS-LSAD 3.1.4.7.8 output resume handle MUST
+ * always be larger than the previous input resume handle, in
+ * particular when hitting the last query it is vital to set the
+ * resume handle correctly to avoid infinite client loops, as
+ * seen e.g. with Windows XP SP3 when resume handle is 0 and
+ * status is NT_STATUS_OK - gd */
+
+ *r->out.resume_handle = (uint32_t)-1;
- return nt_status;
+ return NT_STATUS_OK;
}
#define LSA_AUDIT_NUM_CATEGORIES_NT4 7
_lsa_QueryInfoPolicy
***************************************************************************/
-NTSTATUS _lsa_QueryInfoPolicy(pipes_struct *p,
+NTSTATUS _lsa_QueryInfoPolicy(struct pipes_struct *p,
struct lsa_QueryInfoPolicy *r)
{
NTSTATUS status = NT_STATUS_OK;
struct lsa_info *handle;
- DOM_SID domain_sid;
+ struct dom_sid domain_sid;
const char *name;
- DOM_SID *sid = NULL;
+ struct dom_sid *sid = NULL;
union lsa_PolicyInformation *info = NULL;
uint32_t acc_required = 0;
}
switch (r->in.level) {
+ /* according to MS-LSAD 3.1.4.4.3 */
+ case LSA_POLICY_INFO_MOD:
+ case LSA_POLICY_INFO_AUDIT_FULL_SET:
+ case LSA_POLICY_INFO_AUDIT_FULL_QUERY:
+ return NT_STATUS_INVALID_PARAMETER;
+ case LSA_POLICY_INFO_AUDIT_LOG:
+ info->audit_log.percent_full = 0;
+ info->audit_log.maximum_log_size = 0;
+ info->audit_log.retention_time = 0;
+ info->audit_log.shutdown_in_progress = 0;
+ info->audit_log.time_to_shutdown = 0;
+ info->audit_log.next_audit_record = 0;
+ status = NT_STATUS_OK;
+ break;
+ case LSA_POLICY_INFO_PD:
+ info->pd.name.string = NULL;
+ status = NT_STATUS_OK;
+ break;
+ case LSA_POLICY_INFO_REPLICA:
+ info->replica.source.string = NULL;
+ info->replica.account.string = NULL;
+ status = NT_STATUS_OK;
+ break;
+ case LSA_POLICY_INFO_QUOTA:
+ info->quota.paged_pool = 0;
+ info->quota.non_paged_pool = 0;
+ info->quota.min_wss = 0;
+ info->quota.max_wss = 0;
+ info->quota.pagefile = 0;
+ info->quota.unknown = 0;
+ status = NT_STATUS_OK;
+ break;
case LSA_POLICY_INFO_AUDIT_EVENTS:
{
_lsa_QueryInfoPolicy2
***************************************************************************/
-NTSTATUS _lsa_QueryInfoPolicy2(pipes_struct *p,
+NTSTATUS _lsa_QueryInfoPolicy2(struct pipes_struct *p,
struct lsa_QueryInfoPolicy2 *r2)
{
struct lsa_QueryInfoPolicy r;
_lsa_lookup_sids_internal
***************************************************************************/
-static NTSTATUS _lsa_lookup_sids_internal(pipes_struct *p,
+static NTSTATUS _lsa_lookup_sids_internal(struct pipes_struct *p,
TALLOC_CTX *mem_ctx,
uint16_t level, /* input */
int num_sids, /* input */
{
NTSTATUS status;
int i;
- const DOM_SID **sids = NULL;
+ const struct dom_sid **sids = NULL;
struct lsa_RefDomainList *ref = NULL;
uint32 mapped_count = 0;
struct lsa_dom_info *dom_infos = NULL;
return NT_STATUS_OK;
}
- sids = TALLOC_ARRAY(p->mem_ctx, const DOM_SID *, num_sids);
+ sids = TALLOC_ARRAY(p->mem_ctx, const struct dom_sid *, num_sids);
ref = TALLOC_ZERO_P(p->mem_ctx, struct lsa_RefDomainList);
if (sids == NULL || ref == NULL) {
_lsa_LookupSids
***************************************************************************/
-NTSTATUS _lsa_LookupSids(pipes_struct *p,
+NTSTATUS _lsa_LookupSids(struct pipes_struct *p,
struct lsa_LookupSids *r)
{
NTSTATUS status;
_lsa_LookupSids2
***************************************************************************/
-NTSTATUS _lsa_LookupSids2(pipes_struct *p,
+NTSTATUS _lsa_LookupSids2(struct pipes_struct *p,
struct lsa_LookupSids2 *r)
{
NTSTATUS status;
struct lsa_TranslatedName2 *names = NULL;
bool check_policy = true;
- switch (p->hdr_req.opnum) {
+ switch (p->opnum) {
case NDR_LSA_LOOKUPSIDS3:
check_policy = false;
break;
_lsa_LookupSids3
***************************************************************************/
-NTSTATUS _lsa_LookupSids3(pipes_struct *p,
+NTSTATUS _lsa_LookupSids3(struct pipes_struct *p,
struct lsa_LookupSids3 *r)
{
struct lsa_LookupSids2 q;
/* No policy handle on this call. Restrict to crypto connections. */
- if (p->auth.auth_type != PIPE_AUTH_TYPE_SCHANNEL) {
+ if (p->auth.auth_type != DCERPC_AUTH_TYPE_SCHANNEL) {
DEBUG(0,("_lsa_LookupSids3: client %s not using schannel for netlogon\n",
get_remote_machine_name() ));
return NT_STATUS_INVALID_PARAMETER;
q.in.handle = NULL;
q.in.sids = r->in.sids;
q.in.level = r->in.level;
- q.in.unknown1 = r->in.unknown1;
- q.in.unknown2 = r->in.unknown2;
+ q.in.lookup_options = r->in.lookup_options;
+ q.in.client_revision = r->in.client_revision;
q.in.names = r->in.names;
q.in.count = r->in.count;
/***************************************************************************
***************************************************************************/
-static int lsa_lookup_level_to_flags(uint16 level)
+static int lsa_lookup_level_to_flags(enum lsa_LookupNamesLevel level)
{
int flags;
switch (level) {
- case 1:
+ case LSA_LOOKUP_NAMES_ALL: /* 1 */
flags = LOOKUP_NAME_ALL;
break;
- case 2:
+ case LSA_LOOKUP_NAMES_DOMAINS_ONLY: /* 2 */
flags = LOOKUP_NAME_DOMAIN|LOOKUP_NAME_REMOTE|LOOKUP_NAME_ISOLATED;
break;
- case 3:
+ case LSA_LOOKUP_NAMES_PRIMARY_DOMAIN_ONLY: /* 3 */
flags = LOOKUP_NAME_DOMAIN|LOOKUP_NAME_ISOLATED;
break;
- case 4:
- case 5:
- case 6:
+ case LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY: /* 4 */
+ case LSA_LOOKUP_NAMES_FOREST_TRUSTS_ONLY: /* 5 */
+ case LSA_LOOKUP_NAMES_UPLEVEL_TRUSTS_ONLY2: /* 6 */
+ case LSA_LOOKUP_NAMES_RODC_REFERRAL_TO_FULL_DC: /* 7 */
default:
flags = LOOKUP_NAME_NONE;
break;
_lsa_LookupNames
***************************************************************************/
-NTSTATUS _lsa_LookupNames(pipes_struct *p,
+NTSTATUS _lsa_LookupNames(struct pipes_struct *p,
struct lsa_LookupNames *r)
{
NTSTATUS status = NT_STATUS_NONE_MAPPED;
_lsa_LookupNames2
***************************************************************************/
-NTSTATUS _lsa_LookupNames2(pipes_struct *p,
+NTSTATUS _lsa_LookupNames2(struct pipes_struct *p,
struct lsa_LookupNames2 *r)
{
NTSTATUS status;
_lsa_LookupNames3
***************************************************************************/
-NTSTATUS _lsa_LookupNames3(pipes_struct *p,
+NTSTATUS _lsa_LookupNames3(struct pipes_struct *p,
struct lsa_LookupNames3 *r)
{
NTSTATUS status;
int flags = 0;
bool check_policy = true;
- switch (p->hdr_req.opnum) {
+ switch (p->opnum) {
case NDR_LSA_LOOKUPNAMES4:
check_policy = false;
break;
_lsa_LookupNames4
***************************************************************************/
-NTSTATUS _lsa_LookupNames4(pipes_struct *p,
+NTSTATUS _lsa_LookupNames4(struct pipes_struct *p,
struct lsa_LookupNames4 *r)
{
struct lsa_LookupNames3 q;
/* No policy handle on this call. Restrict to crypto connections. */
- if (p->auth.auth_type != PIPE_AUTH_TYPE_SCHANNEL) {
+ if (p->auth.auth_type != DCERPC_AUTH_TYPE_SCHANNEL) {
DEBUG(0,("_lsa_lookup_names4: client %s not using schannel for netlogon\n",
get_remote_machine_name() ));
return NT_STATUS_INVALID_PARAMETER;
_lsa_close. Also weird - needs to check if lsa handle is correct. JRA.
***************************************************************************/
-NTSTATUS _lsa_Close(pipes_struct *p, struct lsa_Close *r)
+NTSTATUS _lsa_Close(struct pipes_struct *p, struct lsa_Close *r)
{
if (!find_policy_by_hnd(p, r->in.handle, NULL)) {
return NT_STATUS_INVALID_HANDLE;
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_OpenSecret(pipes_struct *p, struct lsa_OpenSecret *r)
+NTSTATUS _lsa_OpenSecret(struct pipes_struct *p, struct lsa_OpenSecret *r)
{
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_OpenTrustedDomain(pipes_struct *p, struct lsa_OpenTrustedDomain *r)
+NTSTATUS _lsa_OpenTrustedDomain(struct pipes_struct *p,
+ struct lsa_OpenTrustedDomain *r)
{
return NT_STATUS_OBJECT_NAME_NOT_FOUND;
}
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_CreateTrustedDomain(pipes_struct *p, struct lsa_CreateTrustedDomain *r)
+NTSTATUS _lsa_CreateTrustedDomain(struct pipes_struct *p,
+ struct lsa_CreateTrustedDomain *r)
{
return NT_STATUS_ACCESS_DENIED;
}
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_CreateSecret(pipes_struct *p, struct lsa_CreateSecret *r)
+NTSTATUS _lsa_CreateSecret(struct pipes_struct *p, struct lsa_CreateSecret *r)
{
return NT_STATUS_ACCESS_DENIED;
}
/***************************************************************************
***************************************************************************/
-NTSTATUS _lsa_SetSecret(pipes_struct *p, struct lsa_SetSecret *r)
+NTSTATUS _lsa_SetSecret(struct pipes_struct *p, struct lsa_SetSecret *r)
{
return NT_STATUS_ACCESS_DENIED;
}
_lsa_DeleteObject
***************************************************************************/
-NTSTATUS _lsa_DeleteObject(pipes_struct *p,
+NTSTATUS _lsa_DeleteObject(struct pipes_struct *p,
struct lsa_DeleteObject *r)
{
NTSTATUS status;
return NT_STATUS_INVALID_HANDLE;
}
- if (!(info->access & STD_RIGHT_DELETE_ACCESS)) {
+ if (!(info->access & SEC_STD_DELETE)) {
return NT_STATUS_ACCESS_DENIED;
}
_lsa_EnumPrivs
***************************************************************************/
-NTSTATUS _lsa_EnumPrivs(pipes_struct *p,
+NTSTATUS _lsa_EnumPrivs(struct pipes_struct *p,
struct lsa_EnumPrivs *r)
{
struct lsa_info *handle;
uint32 enum_context = *r->in.resume_handle;
int num_privs = count_all_privileges();
struct lsa_PrivEntry *entries = NULL;
- LUID_ATTR luid;
+ struct lsa_LUIDAttribute luid;
/* remember that the enum_context starts at 0 and not 1 */
_lsa_LookupPrivDisplayName
***************************************************************************/
-NTSTATUS _lsa_LookupPrivDisplayName(pipes_struct *p,
+NTSTATUS _lsa_LookupPrivDisplayName(struct pipes_struct *p,
struct lsa_LookupPrivDisplayName *r)
{
struct lsa_info *handle;
_lsa_EnumAccounts
***************************************************************************/
-NTSTATUS _lsa_EnumAccounts(pipes_struct *p,
+NTSTATUS _lsa_EnumAccounts(struct pipes_struct *p,
struct lsa_EnumAccounts *r)
{
struct lsa_info *handle;
- DOM_SID *sid_list;
+ struct dom_sid *sid_list;
int i, j, num_entries;
NTSTATUS status;
struct lsa_SidPtr *sids = NULL;
_lsa_GetUserName
***************************************************************************/
-NTSTATUS _lsa_GetUserName(pipes_struct *p,
+NTSTATUS _lsa_GetUserName(struct pipes_struct *p,
struct lsa_GetUserName *r)
{
const char *username, *domname;
}
} else {
username = p->server_info->sanitized_username;
- domname = pdb_get_domain(p->server_info->sam_account);
+ domname = p->server_info->info3->base.domain.string;
}
account_name = TALLOC_P(p->mem_ctx, struct lsa_String);
_lsa_CreateAccount
***************************************************************************/
-NTSTATUS _lsa_CreateAccount(pipes_struct *p,
+NTSTATUS _lsa_CreateAccount(struct pipes_struct *p,
struct lsa_CreateAccount *r)
{
NTSTATUS status;
return NT_STATUS_ACCESS_DENIED;
}
+ /* Work out max allowed. */
+ map_max_allowed_access(p->server_info->ptok,
+ &p->server_info->utok,
+ &r->in.access_mask);
+
/* map the generic bits to the lsa policy ones */
se_map_generic(&r->in.access_mask, &lsa_account_mapping);
return status;
}
- status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, r->in.access_mask,
- &acc_granted, "_lsa_CreateAccount");
+ status = access_check_object(psd, p->server_info->ptok,
+ NULL, 0, r->in.access_mask,
+ &acc_granted, "_lsa_CreateAccount");
if (!NT_STATUS_IS_OK(status)) {
return status;
}
_lsa_OpenAccount
***************************************************************************/
-NTSTATUS _lsa_OpenAccount(pipes_struct *p,
+NTSTATUS _lsa_OpenAccount(struct pipes_struct *p,
struct lsa_OpenAccount *r)
{
struct lsa_info *handle;
struct lsa_info *info;
- SEC_DESC *psd = NULL;
+ struct security_descriptor *psd = NULL;
size_t sd_size;
uint32_t des_access = r->in.access_mask;
uint32_t acc_granted;
}
status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, des_access,
- &acc_granted, "_lsa_OpenAccount" );
-
+ NULL, 0, des_access,
+ &acc_granted, "_lsa_OpenAccount" );
if (!NT_STATUS_IS_OK(status)) {
return status;
}
For a given SID, enumerate all the privilege this account has.
***************************************************************************/
-NTSTATUS _lsa_EnumPrivsAccount(pipes_struct *p,
+NTSTATUS _lsa_EnumPrivsAccount(struct pipes_struct *p,
struct lsa_EnumPrivsAccount *r)
{
NTSTATUS status = NT_STATUS_OK;
}
for (i=0; i<privileges.count; i++) {
- luid_attrs[i].luid.low = privileges.set[i].luid.low;
- luid_attrs[i].luid.high = privileges.set[i].luid.high;
- luid_attrs[i].attribute = privileges.set[i].attr;
+ luid_attrs[i] = privileges.set[i];
}
priv_set->count = privileges.count;
_lsa_GetSystemAccessAccount
***************************************************************************/
-NTSTATUS _lsa_GetSystemAccessAccount(pipes_struct *p,
+NTSTATUS _lsa_GetSystemAccessAccount(struct pipes_struct *p,
struct lsa_GetSystemAccessAccount *r)
{
NTSTATUS status;
update the systemaccount information
***************************************************************************/
-NTSTATUS _lsa_SetSystemAccessAccount(pipes_struct *p,
+NTSTATUS _lsa_SetSystemAccessAccount(struct pipes_struct *p,
struct lsa_SetSystemAccessAccount *r)
{
struct lsa_info *info=NULL;
For a given SID, add some privileges.
***************************************************************************/
-NTSTATUS _lsa_AddPrivilegesToAccount(pipes_struct *p,
+NTSTATUS _lsa_AddPrivilegesToAccount(struct pipes_struct *p,
struct lsa_AddPrivilegesToAccount *r)
{
struct lsa_info *info = NULL;
For a given SID, remove some privileges.
***************************************************************************/
-NTSTATUS _lsa_RemovePrivilegesFromAccount(pipes_struct *p,
+NTSTATUS _lsa_RemovePrivilegesFromAccount(struct pipes_struct *p,
struct lsa_RemovePrivilegesFromAccount *r)
{
struct lsa_info *info = NULL;
_lsa_LookupPrivName
***************************************************************************/
-NTSTATUS _lsa_LookupPrivName(pipes_struct *p,
+NTSTATUS _lsa_LookupPrivName(struct pipes_struct *p,
struct lsa_LookupPrivName *r)
{
struct lsa_info *info = NULL;
return NT_STATUS_ACCESS_DENIED;
}
- name = luid_to_privilege_name((LUID *)r->in.luid);
+ name = luid_to_privilege_name(r->in.luid);
if (!name) {
return NT_STATUS_NO_SUCH_PRIVILEGE;
}
_lsa_QuerySecurity
***************************************************************************/
-NTSTATUS _lsa_QuerySecurity(pipes_struct *p,
+NTSTATUS _lsa_QuerySecurity(struct pipes_struct *p,
struct lsa_QuerySecurity *r)
{
struct lsa_info *handle=NULL;
- SEC_DESC *psd = NULL;
+ struct security_descriptor *psd = NULL;
size_t sd_size;
NTSTATUS status;
if (!find_policy_by_hnd(p, r->in.handle, (void **)(void *)&handle))
return NT_STATUS_INVALID_HANDLE;
- if (handle->type == LSA_HANDLE_POLICY_TYPE) {
+ switch (handle->type) {
+ case LSA_HANDLE_POLICY_TYPE:
status = make_lsa_object_sd(p->mem_ctx, &psd, &sd_size,
&lsa_policy_mapping, NULL, 0);
- } else if (handle->type == LSA_HANDLE_ACCOUNT_TYPE) {
+ break;
+ case LSA_HANDLE_ACCOUNT_TYPE:
status = make_lsa_object_sd(p->mem_ctx, &psd, &sd_size,
&lsa_account_mapping,
&handle->sid, LSA_ACCOUNT_ALL_ACCESS);
- } else {
+ break;
+ default:
status = NT_STATUS_INVALID_HANDLE;
+ break;
}
if (!NT_STATUS_IS_OK(status)) {
_lsa_AddAccountRights
***************************************************************************/
-NTSTATUS _lsa_AddAccountRights(pipes_struct *p,
+NTSTATUS _lsa_AddAccountRights(struct pipes_struct *p,
struct lsa_AddAccountRights *r)
{
struct lsa_info *info = NULL;
int i = 0;
uint32_t acc_granted = 0;
- SEC_DESC *psd = NULL;
+ struct security_descriptor *psd = NULL;
size_t sd_size;
- DOM_SID sid;
+ struct dom_sid sid;
NTSTATUS status;
/* find the connection policy handle. */
* on the account sid. We don't check here so just use the latter. JRA.
*/
- status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|LSA_ACCOUNT_VIEW,
- &acc_granted, "_lsa_AddAccountRights" );
-
+ status = access_check_object(psd, p->server_info->ptok,
+ NULL, 0,
+ LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|LSA_ACCOUNT_VIEW,
+ &acc_granted, "_lsa_AddAccountRights" );
if (!NT_STATUS_IS_OK(status)) {
return status;
}
_lsa_RemoveAccountRights
***************************************************************************/
-NTSTATUS _lsa_RemoveAccountRights(pipes_struct *p,
+NTSTATUS _lsa_RemoveAccountRights(struct pipes_struct *p,
struct lsa_RemoveAccountRights *r)
{
struct lsa_info *info = NULL;
int i = 0;
- SEC_DESC *psd = NULL;
+ struct security_descriptor *psd = NULL;
size_t sd_size;
- DOM_SID sid;
+ struct dom_sid sid;
const char *privname = NULL;
uint32_t acc_granted = 0;
NTSTATUS status;
* and DELETE on the account sid.
*/
- status = access_check_object(psd, p->server_info->ptok,
- NULL, 0, LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|
- LSA_ACCOUNT_VIEW|STD_RIGHT_DELETE_ACCESS,
- &acc_granted, "_lsa_AddAccountRights" );
-
+ status = access_check_object(psd, p->server_info->ptok,
+ NULL, 0,
+ LSA_ACCOUNT_ADJUST_PRIVILEGES|LSA_ACCOUNT_ADJUST_SYSTEM_ACCESS|
+ LSA_ACCOUNT_VIEW|SEC_STD_DELETE,
+ &acc_granted, "_lsa_RemoveAccountRights");
if (!NT_STATUS_IS_OK(status)) {
return status;
}
_lsa_EnumAccountRights
***************************************************************************/
-NTSTATUS _lsa_EnumAccountRights(pipes_struct *p,
+NTSTATUS _lsa_EnumAccountRights(struct pipes_struct *p,
struct lsa_EnumAccountRights *r)
{
NTSTATUS status;
struct lsa_info *info = NULL;
- DOM_SID sid;
+ struct dom_sid sid;
PRIVILEGE_SET privileges;
SE_PRIV mask;
_lsa_LookupPrivValue
***************************************************************************/
-NTSTATUS _lsa_LookupPrivValue(pipes_struct *p,
+NTSTATUS _lsa_LookupPrivValue(struct pipes_struct *p,
struct lsa_LookupPrivValue *r)
{
struct lsa_info *info = NULL;
const char *name = NULL;
- LUID_ATTR priv_luid;
+ struct lsa_LUIDAttribute priv_luid;
SE_PRIV mask;
/* find the connection policy handle. */
_lsa_EnumAccountsWithUserRight
***************************************************************************/
-NTSTATUS _lsa_EnumAccountsWithUserRight(pipes_struct *p,
+NTSTATUS _lsa_EnumAccountsWithUserRight(struct pipes_struct *p,
struct lsa_EnumAccountsWithUserRight *r)
{
NTSTATUS status;
_lsa_Delete
***************************************************************************/
-NTSTATUS _lsa_Delete(pipes_struct *p,
+NTSTATUS _lsa_Delete(struct pipes_struct *p,
struct lsa_Delete *r)
{
return NT_STATUS_NOT_SUPPORTED;
* pulling the server stubs across one by one.
*/
-NTSTATUS _lsa_SetSecObj(pipes_struct *p, struct lsa_SetSecObj *r)
+NTSTATUS _lsa_SetSecObj(struct pipes_struct *p, struct lsa_SetSecObj *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_ChangePassword(pipes_struct *p, struct lsa_ChangePassword *r)
+NTSTATUS _lsa_ChangePassword(struct pipes_struct *p,
+ struct lsa_ChangePassword *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_SetInfoPolicy(pipes_struct *p, struct lsa_SetInfoPolicy *r)
+NTSTATUS _lsa_SetInfoPolicy(struct pipes_struct *p, struct lsa_SetInfoPolicy *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_ClearAuditLog(pipes_struct *p, struct lsa_ClearAuditLog *r)
+NTSTATUS _lsa_ClearAuditLog(struct pipes_struct *p, struct lsa_ClearAuditLog *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_GetQuotasForAccount(pipes_struct *p, struct lsa_GetQuotasForAccount *r)
+NTSTATUS _lsa_GetQuotasForAccount(struct pipes_struct *p,
+ struct lsa_GetQuotasForAccount *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_SetQuotasForAccount(pipes_struct *p, struct lsa_SetQuotasForAccount *r)
+NTSTATUS _lsa_SetQuotasForAccount(struct pipes_struct *p,
+ struct lsa_SetQuotasForAccount *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_QueryTrustedDomainInfo(pipes_struct *p, struct lsa_QueryTrustedDomainInfo *r)
+NTSTATUS _lsa_QueryTrustedDomainInfo(struct pipes_struct *p,
+ struct lsa_QueryTrustedDomainInfo *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_SetInformationTrustedDomain(pipes_struct *p, struct lsa_SetInformationTrustedDomain *r)
+NTSTATUS _lsa_SetInformationTrustedDomain(struct pipes_struct *p,
+ struct lsa_SetInformationTrustedDomain *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_QuerySecret(pipes_struct *p, struct lsa_QuerySecret *r)
+NTSTATUS _lsa_QuerySecret(struct pipes_struct *p, struct lsa_QuerySecret *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_QueryTrustedDomainInfoBySid(pipes_struct *p, struct lsa_QueryTrustedDomainInfoBySid *r)
+NTSTATUS _lsa_QueryTrustedDomainInfoBySid(struct pipes_struct *p,
+ struct lsa_QueryTrustedDomainInfoBySid *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_SetTrustedDomainInfo(pipes_struct *p, struct lsa_SetTrustedDomainInfo *r)
+NTSTATUS _lsa_SetTrustedDomainInfo(struct pipes_struct *p,
+ struct lsa_SetTrustedDomainInfo *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_DeleteTrustedDomain(pipes_struct *p, struct lsa_DeleteTrustedDomain *r)
+NTSTATUS _lsa_DeleteTrustedDomain(struct pipes_struct *p,
+ struct lsa_DeleteTrustedDomain *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_StorePrivateData(pipes_struct *p, struct lsa_StorePrivateData *r)
+NTSTATUS _lsa_StorePrivateData(struct pipes_struct *p,
+ struct lsa_StorePrivateData *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_RetrievePrivateData(pipes_struct *p, struct lsa_RetrievePrivateData *r)
+NTSTATUS _lsa_RetrievePrivateData(struct pipes_struct *p,
+ struct lsa_RetrievePrivateData *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_SetInfoPolicy2(pipes_struct *p, struct lsa_SetInfoPolicy2 *r)
+NTSTATUS _lsa_SetInfoPolicy2(struct pipes_struct *p,
+ struct lsa_SetInfoPolicy2 *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_QueryTrustedDomainInfoByName(pipes_struct *p, struct lsa_QueryTrustedDomainInfoByName *r)
+NTSTATUS _lsa_QueryTrustedDomainInfoByName(struct pipes_struct *p,
+ struct lsa_QueryTrustedDomainInfoByName *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_SetTrustedDomainInfoByName(pipes_struct *p, struct lsa_SetTrustedDomainInfoByName *r)
+NTSTATUS _lsa_SetTrustedDomainInfoByName(struct pipes_struct *p,
+ struct lsa_SetTrustedDomainInfoByName *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_EnumTrustedDomainsEx(pipes_struct *p, struct lsa_EnumTrustedDomainsEx *r)
+NTSTATUS _lsa_EnumTrustedDomainsEx(struct pipes_struct *p,
+ struct lsa_EnumTrustedDomainsEx *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CreateTrustedDomainEx(pipes_struct *p, struct lsa_CreateTrustedDomainEx *r)
+NTSTATUS _lsa_CreateTrustedDomainEx(struct pipes_struct *p,
+ struct lsa_CreateTrustedDomainEx *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CloseTrustedDomainEx(pipes_struct *p, struct lsa_CloseTrustedDomainEx *r)
+NTSTATUS _lsa_CloseTrustedDomainEx(struct pipes_struct *p,
+ struct lsa_CloseTrustedDomainEx *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_QueryDomainInformationPolicy(pipes_struct *p, struct lsa_QueryDomainInformationPolicy *r)
+NTSTATUS _lsa_QueryDomainInformationPolicy(struct pipes_struct *p,
+ struct lsa_QueryDomainInformationPolicy *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_SetDomainInformationPolicy(pipes_struct *p, struct lsa_SetDomainInformationPolicy *r)
+NTSTATUS _lsa_SetDomainInformationPolicy(struct pipes_struct *p,
+ struct lsa_SetDomainInformationPolicy *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_OpenTrustedDomainByName(pipes_struct *p, struct lsa_OpenTrustedDomainByName *r)
+NTSTATUS _lsa_OpenTrustedDomainByName(struct pipes_struct *p,
+ struct lsa_OpenTrustedDomainByName *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_TestCall(pipes_struct *p, struct lsa_TestCall *r)
+NTSTATUS _lsa_TestCall(struct pipes_struct *p, struct lsa_TestCall *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CreateTrustedDomainEx2(pipes_struct *p, struct lsa_CreateTrustedDomainEx2 *r)
+NTSTATUS _lsa_CreateTrustedDomainEx2(struct pipes_struct *p,
+ struct lsa_CreateTrustedDomainEx2 *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRWRITE(pipes_struct *p, struct lsa_CREDRWRITE *r)
+NTSTATUS _lsa_CREDRWRITE(struct pipes_struct *p, struct lsa_CREDRWRITE *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRREAD(pipes_struct *p, struct lsa_CREDRREAD *r)
+NTSTATUS _lsa_CREDRREAD(struct pipes_struct *p, struct lsa_CREDRREAD *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRENUMERATE(pipes_struct *p, struct lsa_CREDRENUMERATE *r)
+NTSTATUS _lsa_CREDRENUMERATE(struct pipes_struct *p, struct lsa_CREDRENUMERATE *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRWRITEDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRWRITEDOMAINCREDENTIALS *r)
+NTSTATUS _lsa_CREDRWRITEDOMAINCREDENTIALS(struct pipes_struct *p,
+ struct lsa_CREDRWRITEDOMAINCREDENTIALS *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRREADDOMAINCREDENTIALS(pipes_struct *p, struct lsa_CREDRREADDOMAINCREDENTIALS *r)
+NTSTATUS _lsa_CREDRREADDOMAINCREDENTIALS(struct pipes_struct *p,
+ struct lsa_CREDRREADDOMAINCREDENTIALS *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRDELETE(pipes_struct *p, struct lsa_CREDRDELETE *r)
+NTSTATUS _lsa_CREDRDELETE(struct pipes_struct *p, struct lsa_CREDRDELETE *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRGETTARGETINFO(pipes_struct *p, struct lsa_CREDRGETTARGETINFO *r)
+NTSTATUS _lsa_CREDRGETTARGETINFO(struct pipes_struct *p,
+ struct lsa_CREDRGETTARGETINFO *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRPROFILELOADED(pipes_struct *p, struct lsa_CREDRPROFILELOADED *r)
+NTSTATUS _lsa_CREDRPROFILELOADED(struct pipes_struct *p,
+ struct lsa_CREDRPROFILELOADED *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRGETSESSIONTYPES(pipes_struct *p, struct lsa_CREDRGETSESSIONTYPES *r)
+NTSTATUS _lsa_CREDRGETSESSIONTYPES(struct pipes_struct *p,
+ struct lsa_CREDRGETSESSIONTYPES *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSARREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARREGISTERAUDITEVENT *r)
+NTSTATUS _lsa_LSARREGISTERAUDITEVENT(struct pipes_struct *p,
+ struct lsa_LSARREGISTERAUDITEVENT *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSARGENAUDITEVENT(pipes_struct *p, struct lsa_LSARGENAUDITEVENT *r)
+NTSTATUS _lsa_LSARGENAUDITEVENT(struct pipes_struct *p,
+ struct lsa_LSARGENAUDITEVENT *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSARUNREGISTERAUDITEVENT(pipes_struct *p, struct lsa_LSARUNREGISTERAUDITEVENT *r)
+NTSTATUS _lsa_LSARUNREGISTERAUDITEVENT(struct pipes_struct *p,
+ struct lsa_LSARUNREGISTERAUDITEVENT *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_lsaRQueryForestTrustInformation(pipes_struct *p, struct lsa_lsaRQueryForestTrustInformation *r)
+NTSTATUS _lsa_lsaRQueryForestTrustInformation(struct pipes_struct *p,
+ struct lsa_lsaRQueryForestTrustInformation *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSARSETFORESTTRUSTINFORMATION(pipes_struct *p, struct lsa_LSARSETFORESTTRUSTINFORMATION *r)
+NTSTATUS _lsa_lsaRSetForestTrustInformation(struct pipes_struct *p,
+ struct lsa_lsaRSetForestTrustInformation *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_CREDRRENAME(pipes_struct *p, struct lsa_CREDRRENAME *r)
+NTSTATUS _lsa_CREDRRENAME(struct pipes_struct *p,
+ struct lsa_CREDRRENAME *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSAROPENPOLICYSCE(pipes_struct *p, struct lsa_LSAROPENPOLICYSCE *r)
+NTSTATUS _lsa_LSAROPENPOLICYSCE(struct pipes_struct *p,
+ struct lsa_LSAROPENPOLICYSCE *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r)
+NTSTATUS _lsa_LSARADTREGISTERSECURITYEVENTSOURCE(struct pipes_struct *p,
+ struct lsa_LSARADTREGISTERSECURITYEVENTSOURCE *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(pipes_struct *p, struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r)
+NTSTATUS _lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE(struct pipes_struct *p,
+ struct lsa_LSARADTUNREGISTERSECURITYEVENTSOURCE *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS _lsa_LSARADTREPORTSECURITYEVENT(pipes_struct *p, struct lsa_LSARADTREPORTSECURITYEVENT *r)
+NTSTATUS _lsa_LSARADTREPORTSECURITYEVENT(struct pipes_struct *p,
+ struct lsa_LSARADTREPORTSECURITYEVENT *r)
{
p->rng_fault_state = True;
return NT_STATUS_NOT_IMPLEMENTED;