mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 08:13:01 +00:00
[LSASRV]
Store the domain name and user SID in the session too. svn path=/trunk/; revision=72814
This commit is contained in:
parent
a5bb3a9997
commit
2f75d2cf5a
3 changed files with 44 additions and 4 deletions
|
@ -1380,7 +1380,12 @@ LsapLogonUser(PLSA_API_MSG RequestMsg,
|
||||||
SECURITY_LOGON_TYPE LogonType;
|
SECURITY_LOGON_TYPE LogonType;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
TRACE("(%p %p)\n", RequestMsg, LogonContext);
|
PUNICODE_STRING UserName = NULL;
|
||||||
|
PUNICODE_STRING LogonDomainName = NULL;
|
||||||
|
// UNICODE_STRING LogonServer;
|
||||||
|
|
||||||
|
|
||||||
|
TRACE("LsapLogonUser(%p %p)\n", RequestMsg, LogonContext);
|
||||||
|
|
||||||
PackageId = RequestMsg->LogonUser.Request.AuthenticationPackage;
|
PackageId = RequestMsg->LogonUser.Request.AuthenticationPackage;
|
||||||
LogonType = RequestMsg->LogonUser.Request.LogonType;
|
LogonType = RequestMsg->LogonUser.Request.LogonType;
|
||||||
|
@ -1606,9 +1611,23 @@ LsapLogonUser(PLSA_API_MSG RequestMsg,
|
||||||
|
|
||||||
// TokenHandle = NULL;
|
// TokenHandle = NULL;
|
||||||
|
|
||||||
|
if (LogonType == Interactive ||
|
||||||
|
LogonType == Batch ||
|
||||||
|
LogonType == Service)
|
||||||
|
{
|
||||||
|
UserName = &((PMSV1_0_INTERACTIVE_LOGON)LocalAuthInfo)->UserName;
|
||||||
|
LogonDomainName = &((PMSV1_0_INTERACTIVE_LOGON)LocalAuthInfo)->LogonDomainName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FIXME("LogonType %lu is not supported yet!\n", LogonType);
|
||||||
|
}
|
||||||
|
|
||||||
Status = LsapSetLogonSessionData(&RequestMsg->LogonUser.Reply.LogonId,
|
Status = LsapSetLogonSessionData(&RequestMsg->LogonUser.Reply.LogonId,
|
||||||
LogonType,
|
LogonType,
|
||||||
AccountName);
|
UserName,
|
||||||
|
LogonDomainName,
|
||||||
|
TokenInfo1->User.User.Sid);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ERR("LsapSetLogonSessionData failed (Status 0x%08lx)\n", Status);
|
ERR("LsapSetLogonSessionData failed (Status 0x%08lx)\n", Status);
|
||||||
|
|
|
@ -450,7 +450,9 @@ NTSTATUS
|
||||||
LsapSetLogonSessionData(
|
LsapSetLogonSessionData(
|
||||||
_In_ PLUID LogonId,
|
_In_ PLUID LogonId,
|
||||||
_In_ ULONG LogonType,
|
_In_ ULONG LogonType,
|
||||||
_In_ PUNICODE_STRING UserName);
|
_In_ PUNICODE_STRING UserName,
|
||||||
|
_In_ PUNICODE_STRING LogonDomain,
|
||||||
|
_In_ PSID Sid);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
LsapEnumLogonSessions(IN OUT PLSA_API_MSG RequestMsg);
|
LsapEnumLogonSessions(IN OUT PLSA_API_MSG RequestMsg);
|
||||||
|
|
|
@ -67,9 +67,12 @@ NTSTATUS
|
||||||
LsapSetLogonSessionData(
|
LsapSetLogonSessionData(
|
||||||
_In_ PLUID LogonId,
|
_In_ PLUID LogonId,
|
||||||
_In_ ULONG LogonType,
|
_In_ ULONG LogonType,
|
||||||
_In_ PUNICODE_STRING UserName)
|
_In_ PUNICODE_STRING UserName,
|
||||||
|
_In_ PUNICODE_STRING LogonDomain,
|
||||||
|
_In_ PSID Sid)
|
||||||
{
|
{
|
||||||
PLSAP_LOGON_SESSION Session;
|
PLSAP_LOGON_SESSION Session;
|
||||||
|
ULONG Length;
|
||||||
|
|
||||||
TRACE("LsapSetLogonSessionData(%p)\n", LogonId);
|
TRACE("LsapSetLogonSessionData(%p)\n", LogonId);
|
||||||
|
|
||||||
|
@ -89,6 +92,22 @@ LsapSetLogonSessionData(
|
||||||
Session->UserName.MaximumLength = UserName->MaximumLength;
|
Session->UserName.MaximumLength = UserName->MaximumLength;
|
||||||
RtlCopyMemory(Session->UserName.Buffer, UserName->Buffer, UserName->MaximumLength);
|
RtlCopyMemory(Session->UserName.Buffer, UserName->Buffer, UserName->MaximumLength);
|
||||||
|
|
||||||
|
TRACE("LogonDomain %wZ\n", LogonDomain);
|
||||||
|
Session->LogonDomain.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, LogonDomain->MaximumLength);
|
||||||
|
if (Session->LogonDomain.Buffer == NULL)
|
||||||
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
|
Session->LogonDomain.Length = LogonDomain->Length;
|
||||||
|
Session->LogonDomain.MaximumLength = LogonDomain->MaximumLength;
|
||||||
|
RtlCopyMemory(Session->LogonDomain.Buffer, LogonDomain->Buffer, LogonDomain->MaximumLength);
|
||||||
|
|
||||||
|
Length = RtlLengthSid(Sid);
|
||||||
|
Session->Sid = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, Length);
|
||||||
|
if (Session->UserName.Buffer == NULL)
|
||||||
|
return STATUS_INSUFFICIENT_RESOURCES;
|
||||||
|
|
||||||
|
RtlCopyMemory(Session->Sid, Sid, Length);
|
||||||
|
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue