NTSTATUS
-LsapSetLogonSessionData(IN PLUID LogonId)
+LsapSetLogonSessionData(
+ _In_ PLUID LogonId,
+ _In_ ULONG LogonType,
+ _In_ PUNICODE_STRING UserName)
{
PLSAP_LOGON_SESSION Session;
if (Session == NULL)
return STATUS_NO_SUCH_LOGON_SESSION;
+ TRACE("LogonType %lu\n", LogonType);
+ Session->LogonType = LogonType;
+
+ TRACE("UserName %wZ\n", UserName);
+ Session->UserName.Buffer = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, UserName->MaximumLength);
+ if (Session->UserName.Buffer == NULL)
+ return STATUS_INSUFFICIENT_RESOURCES;
+
+ Session->UserName.Length = UserName->Length;
+ Session->UserName.MaximumLength = UserName->MaximumLength;
+ RtlCopyMemory(Session->UserName.Buffer, UserName->Buffer, UserName->MaximumLength);
return STATUS_SUCCESS;
}
if (Session->UserName.MaximumLength != 0)
{
RtlCopyMemory(Ptr, Session->UserName.Buffer, Session->UserName.MaximumLength);
- Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->UserName.MaximumLength);
-
LocalSessionData->UserName.Buffer = (PWSTR)((ULONG_PTR)Ptr - (ULONG_PTR)LocalSessionData);
+
+ Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->UserName.MaximumLength);
}
/* Copy the LogonDomain string */
if (Session->LogonDomain.MaximumLength != 0)
{
RtlCopyMemory(Ptr, Session->LogonDomain.Buffer, Session->LogonDomain.MaximumLength);
- Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->LogonDomain.MaximumLength);
-
LocalSessionData->LogonDomain.Buffer = (PWSTR)((ULONG_PTR)Ptr - (ULONG_PTR)LocalSessionData);
+
+ Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->LogonDomain.MaximumLength);
}
/* Copy the AuthenticationPackage string */
if (Session->AuthenticationPackage.MaximumLength != 0)
{
RtlCopyMemory(Ptr, Session->AuthenticationPackage.Buffer, Session->AuthenticationPackage.MaximumLength);
- Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->AuthenticationPackage.MaximumLength);
-
LocalSessionData->AuthenticationPackage.Buffer = (PWSTR)((ULONG_PTR)Ptr - (ULONG_PTR)LocalSessionData);
+
+ Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->AuthenticationPackage.MaximumLength);
}
LocalSessionData->LogonType = Session->LogonType;
if (Session->Sid != NULL)
{
RtlCopyMemory(Ptr, Session->Sid, SidLength);
- Ptr = (PUCHAR)((ULONG_PTR)Ptr + SidLength);
-
LocalSessionData->Sid = (PSID)((ULONG_PTR)Ptr - (ULONG_PTR)LocalSessionData);
+
+ Ptr = (PUCHAR)((ULONG_PTR)Ptr + SidLength);
}
/* LogonTime */
if (Session->LogonServer.MaximumLength != 0)
{
RtlCopyMemory(Ptr, Session->LogonServer.Buffer, Session->LogonServer.MaximumLength);
- Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->LogonServer.MaximumLength);
-
LocalSessionData->LogonServer.Buffer = (PWSTR)((ULONG_PTR)Ptr - (ULONG_PTR)LocalSessionData);
+
+ Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->LogonServer.MaximumLength);
}
/* Copy the DnsDomainName string */
if (Session->DnsDomainName.MaximumLength != 0)
{
RtlCopyMemory(Ptr, Session->DnsDomainName.Buffer, Session->DnsDomainName.MaximumLength);
- Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->DnsDomainName.MaximumLength);
-
LocalSessionData->DnsDomainName.Buffer = (PWSTR)((ULONG_PTR)Ptr - (ULONG_PTR)LocalSessionData);
+
+ Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->DnsDomainName.MaximumLength);
}
/* Copy the Upn string */
if (Session->Upn.MaximumLength != 0)
{
RtlCopyMemory(Ptr, Session->Upn.Buffer, Session->Upn.MaximumLength);
- Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->Upn.MaximumLength);
-
LocalSessionData->Upn.Buffer = (PWSTR)((ULONG_PTR)Ptr - (ULONG_PTR)LocalSessionData);
+
+ Ptr = (PUCHAR)((ULONG_PTR)Ptr + Session->Upn.MaximumLength);
}