[LSASRV] Notify all authentication packages of a session to be deleted

This commit is contained in:
Eric Kohl 2021-06-06 11:38:26 +02:00
parent 9eb566e707
commit 6ae7fc2b04
3 changed files with 28 additions and 1 deletions

View file

@ -541,6 +541,25 @@ LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg,
}
VOID
LsapTerminateLogon(
_In_ PLUID LogonId)
{
PLIST_ENTRY ListEntry;
PAUTH_PACKAGE Package;
ListEntry = PackageListHead.Flink;
while (ListEntry != &PackageListHead)
{
Package = CONTAINING_RECORD(ListEntry, AUTH_PACKAGE, Entry);
Package->LsaApLogonTerminated(LogonId);
ListEntry = ListEntry->Flink;
}
}
NTSTATUS
LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg,
PLSAP_LOGON_CONTEXT LogonContext)

View file

@ -126,6 +126,11 @@ NTSTATUS
LsapLogonUser(PLSA_API_MSG RequestMsg,
PLSAP_LOGON_CONTEXT LogonContext);
VOID
LsapTerminateLogon(
_In_ PLUID LogonId);
/* authport.c */
NTSTATUS
StartAuthenticationPort(VOID);

View file

@ -210,7 +210,7 @@ LsapDeleteLogonSession(IN PLUID LogonId)
if (Session == NULL)
return STATUS_NO_SUCH_LOGON_SESSION;
TRACE("LsapDeleteLogonSession(<0x%lx,0x%lx>)\n",
TRACE("LsapDeleteLogonSession(0x%08lx%08lx)\n",
LogonId->HighPart, LogonId->LowPart);
/* Tell ntoskrnl to delete the logon session */
@ -218,6 +218,9 @@ LsapDeleteLogonSession(IN PLUID LogonId)
if (!NT_SUCCESS(Status))
return Status;
/* Notify the authentication packages */
LsapTerminateLogon(LogonId);
/* Remove the session entry from the list */
RemoveEntryList(&Session->Entry);
SessionCount--;