PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
DWORD PreferedMaximumLength)
{
- UNIMPLEMENTED;
- return STATUS_NOT_IMPLEMENTED;
+ PLSA_DB_OBJECT PolicyObject;
+ NTSTATUS Status;
+
+ TRACE("LsarEnumeratePrivileges(%p %p %p %lu)\n",
+ PolicyHandle, EnumerationContext, EnumerationBuffer,
+ PreferedMaximumLength);
+
+ Status = LsapValidateDbObject(PolicyHandle,
+ LsaDbPolicyObject,
+ POLICY_VIEW_LOCAL_INFORMATION,
+ &PolicyObject);
+ if (!NT_SUCCESS(Status))
+ return Status;
+
+ if (EnumerationContext == NULL)
+ return STATUS_INVALID_PARAMETER;
+
+ return LsarpEnumeratePrivileges(EnumerationContext,
+ EnumerationBuffer,
+ PreferedMaximumLength);
}
RtlEnterCriticalSection(&PolicyHandleTableLock);
Status = LsapOpenDbObject(NULL,
+ NULL,
L"Policy",
LsaDbPolicyObject,
DesiredAccess,
LSAPR_HANDLE *AccountHandle)
{
PLSA_DB_OBJECT PolicyObject;
- PLSA_DB_OBJECT AccountsObject = NULL;
PLSA_DB_OBJECT AccountObject = NULL;
LPWSTR SidString = NULL;
NTSTATUS Status = STATUS_SUCCESS;
+ /* Validate the AccountSid */
+ if (!RtlValidSid(AccountSid))
+ return STATUS_INVALID_PARAMETER;
+
/* Validate the PolicyHandle */
Status = LsapValidateDbObject(PolicyHandle,
LsaDbPolicyObject,
return Status;
}
- /* Open the Accounts object */
- Status = LsapOpenDbObject(PolicyObject,
- L"Accounts",
- LsaDbContainerObject,
- 0,
- &AccountsObject);
- if (!NT_SUCCESS(Status))
- {
- ERR("LsapCreateDbObject (Accounts) failed (Status 0x%08lx)\n", Status);
- goto done;
- }
-
/* Create SID string */
if (!ConvertSidToStringSid((PSID)AccountSid,
&SidString))
}
/* Create the Account object */
- Status = LsapCreateDbObject(AccountsObject,
+ Status = LsapCreateDbObject(PolicyObject,
+ L"Accounts",
SidString,
LsaDbAccountObject,
DesiredAccess,
&AccountObject);
if (!NT_SUCCESS(Status))
{
- ERR("LsapCreateDbObject (Account) failed (Status 0x%08lx)\n", Status);
+ ERR("LsapCreateDbObject failed (Status 0x%08lx)\n", Status);
goto done;
}
*AccountHandle = (LSAPR_HANDLE)AccountObject;
}
- if (AccountsObject != NULL)
- LsapCloseDbObject(AccountsObject);
-
return STATUS_SUCCESS;
}
LSAPR_HANDLE *SecretHandle)
{
PLSA_DB_OBJECT PolicyObject;
- PLSA_DB_OBJECT SecretsObject = NULL;
PLSA_DB_OBJECT SecretObject = NULL;
LARGE_INTEGER Time;
NTSTATUS Status = STATUS_SUCCESS;
return Status;
}
- /* Open the Secrets object */
- Status = LsapOpenDbObject(PolicyObject,
- L"Secrets",
- LsaDbContainerObject,
- 0,
- &SecretsObject);
- if (!NT_SUCCESS(Status))
- {
- ERR("LsapCreateDbObject (Secrets) failed (Status 0x%08lx)\n", Status);
- goto done;
- }
-
/* Get the current time */
Status = NtQuerySystemTime(&Time);
if (!NT_SUCCESS(Status))
}
/* Create the Secret object */
- Status = LsapCreateDbObject(SecretsObject,
+ Status = LsapCreateDbObject(PolicyObject,
+ L"Secrets",
SecretName->Buffer,
LsaDbSecretObject,
DesiredAccess,
&SecretObject);
if (!NT_SUCCESS(Status))
{
- ERR("LsapCreateDbObject (Secret) failed (Status 0x%08lx)\n", Status);
+ ERR("LsapCreateDbObject failed (Status 0x%08lx)\n", Status);
goto done;
}
*SecretHandle = (LSAPR_HANDLE)SecretObject;
}
- if (SecretsObject != NULL)
- LsapCloseDbObject(SecretsObject);
-
return STATUS_SUCCESS;
}
LSAPR_HANDLE *AccountHandle)
{
PLSA_DB_OBJECT PolicyObject;
- PLSA_DB_OBJECT AccountsObject = NULL;
PLSA_DB_OBJECT AccountObject = NULL;
LPWSTR SidString = NULL;
NTSTATUS Status = STATUS_SUCCESS;
+ /* Validate the AccountSid */
+ if (!RtlValidSid(AccountSid))
+ return STATUS_INVALID_PARAMETER;
+
/* Validate the PolicyHandle */
Status = LsapValidateDbObject(PolicyHandle,
LsaDbPolicyObject,
- POLICY_CREATE_ACCOUNT,
+ 0,
&PolicyObject);
if (!NT_SUCCESS(Status))
{
return Status;
}
- /* Open the Accounts object */
- Status = LsapOpenDbObject(PolicyObject,
- L"Accounts",
- LsaDbContainerObject,
- 0,
- &AccountsObject);
- if (!NT_SUCCESS(Status))
- {
- ERR("LsapCreateDbObject (Accounts) failed (Status 0x%08lx)\n", Status);
- goto done;
- }
-
/* Create SID string */
if (!ConvertSidToStringSid((PSID)AccountSid,
&SidString))
}
/* Create the Account object */
- Status = LsapOpenDbObject(AccountsObject,
+ Status = LsapOpenDbObject(PolicyObject,
+ L"Accounts",
SidString,
LsaDbAccountObject,
DesiredAccess,
&AccountObject);
if (!NT_SUCCESS(Status))
{
- ERR("LsapOpenDbObject (Account) failed (Status 0x%08lx)\n", Status);
+ ERR("LsapOpenDbObject failed (Status 0x%08lx)\n", Status);
goto done;
}
*AccountHandle = (LSAPR_HANDLE)AccountObject;
}
- if (AccountsObject != NULL)
- LsapCloseDbObject(AccountsObject);
-
- return STATUS_SUCCESS;
+ return Status;
}
LSAPR_HANDLE *SecretHandle)
{
PLSA_DB_OBJECT PolicyObject;
- PLSA_DB_OBJECT SecretsObject = NULL;
PLSA_DB_OBJECT SecretObject = NULL;
NTSTATUS Status = STATUS_SUCCESS;
/* Validate the PolicyHandle */
Status = LsapValidateDbObject(PolicyHandle,
LsaDbPolicyObject,
- POLICY_CREATE_SECRET,
+ 0,
&PolicyObject);
if (!NT_SUCCESS(Status))
{
return Status;
}
- /* Open the Secrets object */
+ /* Create the secret object */
Status = LsapOpenDbObject(PolicyObject,
L"Secrets",
- LsaDbContainerObject,
- 0,
- &SecretsObject);
- if (!NT_SUCCESS(Status))
- {
- ERR("LsapCreateDbObject (Secrets) failed (Status 0x%08lx)\n", Status);
- goto done;
- }
-
- /* Create the secret object */
- Status = LsapOpenDbObject(SecretsObject,
SecretName->Buffer,
LsaDbSecretObject,
DesiredAccess,
&SecretObject);
if (!NT_SUCCESS(Status))
{
- ERR("LsapOpenDbObject (Secret) failed (Status 0x%08lx)\n", Status);
+ ERR("LsapOpenDbObject failed (Status 0x%08lx)\n", Status);
goto done;
}
*SecretHandle = (LSAPR_HANDLE)SecretObject;
}
- if (SecretsObject != NULL)
- LsapCloseDbObject(SecretsObject);
-
- return STATUS_SUCCESS;
+ return Status;
}
/* Function 36 */
-NTSTATUS WINAPI LsarEnmuerateAccountRights(
+NTSTATUS WINAPI LsarEnumerateAccountRights(
LSAPR_HANDLE PolicyHandle,
PRPC_SID AccountSid,
PLSAPR_USER_RIGHT_SET UserRights)
PLSA_DB_OBJECT PolicyObject;
NTSTATUS Status;
- FIXME("(%p,%p,%p) stub\n", PolicyHandle, AccountSid, UserRights);
+ TRACE("LsarEnumerateAccountRights(%p %p %p)\n",
+ PolicyHandle, AccountSid, UserRights);
Status = LsapValidateDbObject(PolicyHandle,
LsaDbPolicyObject,
LSAPR_HANDLE PolicyHandle,
PRPC_UNICODE_STRING TrustedDomainName,
POLICY_INFORMATION_CLASS InformationClass,
- unsigned long *PolicyInformation)
+ PLSAPR_TRUSTED_DOMAIN_INFO *PolicyInformation)
{
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
LSAPR_HANDLE PolicyHandle,
PRPC_UNICODE_STRING TrustedDomainName,
POLICY_INFORMATION_CLASS InformationClass,
- unsigned long PolicyInformation)
+ PLSAPR_TRUSTED_DOMAIN_INFO PolicyInformation)
{
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
NTSTATUS WINAPI LsarQueryDomainInformationPolicy(
LSAPR_HANDLE PolicyHandle,
POLICY_INFORMATION_CLASS InformationClass,
- unsigned long *PolicyInformation)
+ PLSAPR_POLICY_DOMAIN_INFORMATION *PolicyInformation)
{
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
NTSTATUS WINAPI LsarSetDomainInformationPolicy(
LSAPR_HANDLE PolicyHandle,
POLICY_INFORMATION_CLASS InformationClass,
- unsigned long PolicyInformation)
+ PLSAPR_POLICY_DOMAIN_INFORMATION PolicyInformation)
{
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;