X-Git-Url: https://git.reactos.org/?p=reactos.git;a=blobdiff_plain;f=reactos%2Fdll%2Fwin32%2Fmsgina%2Fgui.c;h=06c589427b9db657eb787d6709ac6ebbc303c12d;hp=6357d40439efca3c1c9257a7d12d4e990025ac0e;hb=c10bfd3da933f9cdfa82f12809a851ba17389ee6;hpb=26ed6933abb1f87133e547ce54a9127feb54a2d9;ds=sidebyside diff --git a/reactos/dll/win32/msgina/gui.c b/reactos/dll/win32/msgina/gui.c index 6357d40439e..06c589427b9 100644 --- a/reactos/dll/win32/msgina/gui.c +++ b/reactos/dll/win32/msgina/gui.c @@ -259,6 +259,9 @@ DoChangePassword( ULONG RequestBufferSize; ULONG ResponseBufferSize = 0; LPWSTR Ptr; + LSA_STRING PackageName; + HANDLE LsaHandle = NULL; + ULONG AuthenticationPackage = 0; BOOL res = FALSE; NTSTATUS ProtocolStatus; NTSTATUS Status; @@ -345,9 +348,30 @@ DoChangePassword( 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(pgContext->LsaHandle, - pgContext->AuthenticationPackage, + Status = LsaCallAuthenticationPackage(LsaHandle, + AuthenticationPackage, RequestBuffer, RequestBufferSize, (PVOID*)&ResponseBuffer, @@ -380,6 +404,9 @@ done: if (ResponseBuffer != NULL) LsaFreeReturnBuffer(ResponseBuffer); + if (LsaHandle != NULL) + NtClose(LsaHandle); + return res; }