typedef NTSTATUS (NTAPI *PLSA_CREATE_LOGON_SESSION)(PLUID);
typedef NTSTATUS (NTAPI *PLSA_DELETE_LOGON_SESSION)(PLUID);
-
+typedef NTSTATUS (NTAPI *PLSA_ADD_CREDENTIAL)(PLUID, ULONG, PLSA_STRING, PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_GET_CREDENTIALS)(PLUID, ULONG, PULONG, BOOLEAN, PLSA_STRING, PULONG, PLSA_STRING);
+typedef NTSTATUS (NTAPI *PLSA_DELETE_CREDENTIAL)(PLUID, ULONG, PLSA_STRING);
typedef PVOID (NTAPI *PLSA_ALLOCATE_LSA_HEAP)(ULONG);
typedef VOID (NTAPI *PLSA_FREE_LSA_HEAP)(PVOID);
typedef NTSTATUS (NTAPI *PLSA_ALLOCATE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, ULONG, PVOID*);
{
PLSA_CREATE_LOGON_SESSION CreateLogonSession;
PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
- PVOID /*PLSA_ADD_CREDENTIAL */ AddCredential;
- PVOID /*PLSA_GET_CREDENTIALS */ GetCredentials;
- PVOID /*PLSA_DELETE_CREDENTIAL */ DeleteCredential;
+ PLSA_ADD_CREDENTIAL AddCredential;
+ PLSA_GET_CREDENTIALS GetCredentials;
+ PLSA_DELETE_CREDENTIAL DeleteCredential;
PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
PLSA_FREE_LSA_HEAP FreeLsaHeap;
PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
/* Initialize the dispatch table */
DispatchTable.CreateLogonSession = &LsapCreateLogonSession;
DispatchTable.DeleteLogonSession = &LsapDeleteLogonSession;
- DispatchTable.AddCredential = NULL;
- DispatchTable.GetCredentials = NULL;
- DispatchTable.DeleteCredential = NULL;
+ DispatchTable.AddCredential = &LsapAddCredential;
+ DispatchTable.GetCredentials = &LsapGetCredentials;
+ DispatchTable.DeleteCredential = &LsapDeleteCredential;
DispatchTable.AllocateLsaHeap = &LsapAllocateHeap;
DispatchTable.FreeLsaHeap = &LsapFreeHeap;
DispatchTable.AllocateClientBuffer = &LsapAllocateClientBuffer;
for (i = 0; i < TokenInfo1->Groups->GroupCount; i++)
SidArray.Sids[i + 1].SidPointer = TokenInfo1->Groups->Groups[i].Sid;
+ BuiltinMembership.Element = NULL;
+ AccountMembership.Element = NULL;
+
Status = SamIConnect(NULL,
&ServerHandle,
SAM_SERVER_CONNECT | SAM_SERVER_LOOKUP_DOMAIN,
goto done;
}
- BuiltinMembership.Element = NULL;
Status = SamrGetAliasMembership(BuiltinDomainHandle,
&SidArray,
&BuiltinMembership);
goto done;
}
- AccountMembership.Element = NULL;
Status = SamrGetAliasMembership(AccountDomainHandle,
&SidArray,
&AccountMembership);
goto done;
}
- TokenHandle = NULL;
+// TokenHandle = NULL;
- Status = LsapSetLogonSessionData(&RequestMsg->LogonUser.Reply.LogonId);
+ Status = LsapSetLogonSessionData(&RequestMsg->LogonUser.Reply.LogonId,
+ LogonType,
+ AccountName);
if (!NT_SUCCESS(Status))
{
ERR("LsapSetLogonSessionData failed (Status 0x%08lx)\n", Status);
}
done:
- if (!NT_SUCCESS(Status))
- {
+// if (!NT_SUCCESS(Status))
+// {
if (TokenHandle != NULL)
NtClose(TokenHandle);
- }
+// }
/* Free the local groups */
if (LocalGroups != NULL)