Author: ekohl
Date: Wed Jan 29 21:54:49 2014
New Revision: 61888
URL:
http://svn.reactos.org/svn/reactos?rev=61888&view=rev
Log:
[MSGINA]
Create a connection to the LSA upon initialization and use it to change passwords. Logon
will use the connection later.
Modified:
trunk/reactos/dll/win32/msgina/gui.c
trunk/reactos/dll/win32/msgina/msgina.c
trunk/reactos/dll/win32/msgina/msgina.h
Modified: trunk/reactos/dll/win32/msgina/gui.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msgina/gui.c?rev…
==============================================================================
--- trunk/reactos/dll/win32/msgina/gui.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msgina/gui.c [iso-8859-1] Wed Jan 29 21:54:49 2014
@@ -259,9 +259,6 @@
ULONG RequestBufferSize;
ULONG ResponseBufferSize = 0;
LPWSTR Ptr;
- LSA_STRING PackageName;
- HANDLE LsaHandle = NULL;
- ULONG AuthenticationPackage = 0;
BOOL res = FALSE;
NTSTATUS ProtocolStatus;
NTSTATUS Status;
@@ -348,30 +345,9 @@
NewPassword1,
RequestBuffer->NewPassword.MaximumLength);
- /* Connect to the LSA server */
- Status = LsaConnectUntrusted(&LsaHandle);
- if (!NT_SUCCESS(Status))
- {
- ERR("LsaConnectUntrusted failed (Status 0x%08lx)\n", Status);
- goto done;
- }
-
- /* Get the authentication package */
- RtlInitAnsiString((PANSI_STRING)&PackageName,
- MSV1_0_PACKAGE_NAME);
-
- Status = LsaLookupAuthenticationPackage(LsaHandle,
- &PackageName,
- &AuthenticationPackage);
- if (!NT_SUCCESS(Status))
- {
- ERR("LsaLookupAuthenticationPackage failed (Status 0x%08lx)\n",
Status);
- goto done;
- }
-
/* Call the authentication package */
- Status = LsaCallAuthenticationPackage(LsaHandle,
- AuthenticationPackage,
+ Status = LsaCallAuthenticationPackage(pgContext->LsaHandle,
+ pgContext->AuthenticationPackage,
RequestBuffer,
RequestBufferSize,
(PVOID*)&ResponseBuffer,
@@ -403,9 +379,6 @@
if (ResponseBuffer != NULL)
LsaFreeReturnBuffer(ResponseBuffer);
-
- if (LsaHandle != NULL)
- NtClose(LsaHandle);
return res;
}
Modified: trunk/reactos/dll/win32/msgina/msgina.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msgina/msgina.c?…
==============================================================================
--- trunk/reactos/dll/win32/msgina/msgina.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msgina/msgina.c [iso-8859-1] Wed Jan 29 21:54:49 2014
@@ -254,6 +254,46 @@
}
+static
+BOOL
+ConnectToLsa(
+ PGINA_CONTEXT pgContext)
+{
+ LSA_STRING LogonProcessName;
+ LSA_STRING PackageName;
+ LSA_OPERATIONAL_MODE SecurityMode = 0;
+ NTSTATUS Status;
+
+ /* Connect to the LSA server */
+ RtlInitAnsiString((PANSI_STRING)&LogonProcessName,
+ "MSGINA");
+
+ Status = LsaRegisterLogonProcess(&LogonProcessName,
+ &pgContext->LsaHandle,
+ &SecurityMode);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("LsaRegisterLogonProcess failed (Status 0x%08lx)\n", Status);
+ return FALSE;
+ }
+
+ /* Get the authentication package */
+ RtlInitAnsiString((PANSI_STRING)&PackageName,
+ MSV1_0_PACKAGE_NAME);
+
+ Status = LsaLookupAuthenticationPackage(pgContext->LsaHandle,
+ &PackageName,
+ &pgContext->AuthenticationPackage);
+ if (!NT_SUCCESS(Status))
+ {
+ ERR("LsaLookupAuthenticationPackage failed (Status 0x%08lx)\n",
Status);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+
/*
* @implemented
*/
@@ -279,6 +319,13 @@
if (!GetRegistrySettings(pgContext))
{
WARN("GetRegistrySettings() failed\n");
+ LocalFree(pgContext);
+ return FALSE;
+ }
+
+ if (!ConnectToLsa(pgContext))
+ {
+ WARN("ConnectToLsa() failed\n");
LocalFree(pgContext);
return FALSE;
}
Modified: trunk/reactos/dll/win32/msgina/msgina.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/msgina/msgina.h?…
==============================================================================
--- trunk/reactos/dll/win32/msgina/msgina.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/msgina/msgina.h [iso-8859-1] Wed Jan 29 21:54:49 2014
@@ -38,6 +38,8 @@
PWLX_DISPATCH_VERSION_1_3 pWlxFuncs;
HANDLE hDllInstance;
HWND hStatusWindow;
+ HANDLE LsaHandle;
+ ULONG AuthenticationPackage;
DWORD AutoLogonState;
BOOL bDisableCAD;
BOOL bAutoAdminLogon;