mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 17:03:02 +00:00
[MSGINA]
MyLogonUser: Pass the sub status to the caller. svn path=/trunk/; revision=62369
This commit is contained in:
parent
dae5c99d12
commit
5012425e7f
4 changed files with 66 additions and 49 deletions
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "msgina.h"
|
#include "msgina.h"
|
||||||
|
|
||||||
BOOL
|
NTSTATUS
|
||||||
ConnectToLsa(
|
ConnectToLsa(
|
||||||
PGINA_CONTEXT pgContext)
|
PGINA_CONTEXT pgContext)
|
||||||
{
|
{
|
||||||
|
@ -18,7 +18,7 @@ ConnectToLsa(
|
||||||
|
|
||||||
/* We are already connected to the LSA */
|
/* We are already connected to the LSA */
|
||||||
if (pgContext->LsaHandle != NULL)
|
if (pgContext->LsaHandle != NULL)
|
||||||
return TRUE;
|
return STATUS_SUCCESS;
|
||||||
|
|
||||||
/* Connect to the LSA server */
|
/* Connect to the LSA server */
|
||||||
RtlInitAnsiString((PANSI_STRING)&LogonProcessName,
|
RtlInitAnsiString((PANSI_STRING)&LogonProcessName,
|
||||||
|
@ -30,7 +30,7 @@ ConnectToLsa(
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ERR("LsaRegisterLogonProcess failed (Status 0x%08lx)\n", Status);
|
ERR("LsaRegisterLogonProcess failed (Status 0x%08lx)\n", Status);
|
||||||
return FALSE;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the authentication package */
|
/* Get the authentication package */
|
||||||
|
@ -43,21 +43,21 @@ ConnectToLsa(
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ERR("LsaLookupAuthenticationPackage failed (Status 0x%08lx)\n", Status);
|
ERR("LsaLookupAuthenticationPackage failed (Status 0x%08lx)\n", Status);
|
||||||
return FALSE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return TRUE;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BOOL
|
NTSTATUS
|
||||||
MyLogonUser(
|
MyLogonUser(
|
||||||
HANDLE LsaHandle,
|
HANDLE LsaHandle,
|
||||||
ULONG AuthenticationPackage,
|
ULONG AuthenticationPackage,
|
||||||
LPWSTR lpszUsername,
|
LPWSTR lpszUsername,
|
||||||
LPWSTR lpszDomain,
|
LPWSTR lpszDomain,
|
||||||
LPWSTR lpszPassword,
|
LPWSTR lpszPassword,
|
||||||
PHANDLE phToken)
|
PHANDLE phToken,
|
||||||
|
PNTSTATUS SubStatus)
|
||||||
{
|
{
|
||||||
SID_IDENTIFIER_AUTHORITY LocalAuthority = {SECURITY_LOCAL_SID_AUTHORITY};
|
SID_IDENTIFIER_AUTHORITY LocalAuthority = {SECURITY_LOCAL_SID_AUTHORITY};
|
||||||
SID_IDENTIFIER_AUTHORITY SystemAuthority = {SECURITY_NT_AUTHORITY};
|
SID_IDENTIFIER_AUTHORITY SystemAuthority = {SECURITY_NT_AUTHORITY};
|
||||||
|
@ -78,7 +78,6 @@ MyLogonUser(
|
||||||
LUID LogonId = {0, 0};
|
LUID LogonId = {0, 0};
|
||||||
HANDLE TokenHandle = NULL;
|
HANDLE TokenHandle = NULL;
|
||||||
QUOTA_LIMITS QuotaLimits;
|
QUOTA_LIMITS QuotaLimits;
|
||||||
NTSTATUS SubStatus = STATUS_SUCCESS;
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
*phToken = NULL;
|
*phToken = NULL;
|
||||||
|
@ -209,7 +208,7 @@ MyLogonUser(
|
||||||
&Luid,
|
&Luid,
|
||||||
&TokenHandle,
|
&TokenHandle,
|
||||||
&QuotaLimits,
|
&QuotaLimits,
|
||||||
&SubStatus);
|
SubStatus);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
ERR("LsaLogonUser failed (Status 0x%08lx)\n", Status);
|
ERR("LsaLogonUser failed (Status 0x%08lx)\n", Status);
|
||||||
|
@ -259,13 +258,7 @@ done:
|
||||||
if (AuthInfo != NULL)
|
if (AuthInfo != NULL)
|
||||||
RtlFreeHeap(RtlGetProcessHeap(), 0, AuthInfo);
|
RtlFreeHeap(RtlGetProcessHeap(), 0, AuthInfo);
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
return Status;
|
||||||
{
|
|
||||||
SetLastError(RtlNtStatusToDosError(Status));
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
|
@ -612,20 +612,27 @@ DoAdminUnlock(
|
||||||
ULONG Size;
|
ULONG Size;
|
||||||
ULONG i;
|
ULONG i;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
NTSTATUS SubStatus = STATUS_SUCCESS;
|
||||||
|
|
||||||
TRACE("(%S %S %S)\n", UserName, Domain, Password);
|
TRACE("(%S %S %S)\n", UserName, Domain, Password);
|
||||||
|
|
||||||
if (!ConnectToLsa(pgContext))
|
Status = ConnectToLsa(pgContext);
|
||||||
return FALSE;
|
if (!NT_SUCCESS(Status))
|
||||||
|
|
||||||
if (!MyLogonUser(pgContext->LsaHandle,
|
|
||||||
pgContext->AuthenticationPackage,
|
|
||||||
UserName,
|
|
||||||
Domain,
|
|
||||||
Password,
|
|
||||||
&pgContext->UserToken))
|
|
||||||
{
|
{
|
||||||
WARN("LogonUserW() failed\n");
|
WARN("ConnectToLsa() failed\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = MyLogonUser(pgContext->LsaHandle,
|
||||||
|
pgContext->AuthenticationPackage,
|
||||||
|
UserName,
|
||||||
|
Domain,
|
||||||
|
Password,
|
||||||
|
&pgContext->UserToken,
|
||||||
|
&SubStatus);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
WARN("MyLogonUser() failed\n");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -693,18 +700,26 @@ DoLoginTasks(
|
||||||
DWORD cbStats, cbSize;
|
DWORD cbStats, cbSize;
|
||||||
DWORD dwLength;
|
DWORD dwLength;
|
||||||
BOOL bResult;
|
BOOL bResult;
|
||||||
|
NTSTATUS SubStatus;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
if (!ConnectToLsa(pgContext))
|
Status = ConnectToLsa(pgContext);
|
||||||
return FALSE;
|
if (!NT_SUCCESS(Status))
|
||||||
|
|
||||||
if (!MyLogonUser(pgContext->LsaHandle,
|
|
||||||
pgContext->AuthenticationPackage,
|
|
||||||
UserName,
|
|
||||||
Domain,
|
|
||||||
Password,
|
|
||||||
&pgContext->UserToken))
|
|
||||||
{
|
{
|
||||||
WARN("LogonUserW() failed\n");
|
WARN("ConnectToLsa() failed\n");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = MyLogonUser(pgContext->LsaHandle,
|
||||||
|
pgContext->AuthenticationPackage,
|
||||||
|
UserName,
|
||||||
|
Domain,
|
||||||
|
Password,
|
||||||
|
&pgContext->UserToken,
|
||||||
|
&SubStatus);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
WARN("MyLogonUser() failed\n");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,18 +81,19 @@ typedef struct _GINA_UI
|
||||||
|
|
||||||
/* lsa.c */
|
/* lsa.c */
|
||||||
|
|
||||||
BOOL
|
NTSTATUS
|
||||||
ConnectToLsa(
|
ConnectToLsa(
|
||||||
PGINA_CONTEXT pgContext);
|
PGINA_CONTEXT pgContext);
|
||||||
|
|
||||||
BOOL
|
NTSTATUS
|
||||||
MyLogonUser(
|
MyLogonUser(
|
||||||
HANDLE LsaHandle,
|
HANDLE LsaHandle,
|
||||||
ULONG AuthenticationPackage,
|
ULONG AuthenticationPackage,
|
||||||
LPWSTR lpszUsername,
|
LPWSTR lpszUsername,
|
||||||
LPWSTR lpszDomain,
|
LPWSTR lpszDomain,
|
||||||
LPWSTR lpszPassword,
|
LPWSTR lpszPassword,
|
||||||
PHANDLE phToken);
|
PHANDLE phToken,
|
||||||
|
PNTSTATUS SubStatus);
|
||||||
|
|
||||||
/* msgina.c */
|
/* msgina.c */
|
||||||
|
|
||||||
|
|
|
@ -221,6 +221,8 @@ TUILockedSAS(
|
||||||
HANDLE hToken;
|
HANDLE hToken;
|
||||||
WCHAR UserName[256];
|
WCHAR UserName[256];
|
||||||
WCHAR Password[256];
|
WCHAR Password[256];
|
||||||
|
NTSTATUS SubStatus;
|
||||||
|
NTSTATUS Status;
|
||||||
|
|
||||||
TRACE("TUILockedSAS()\n");
|
TRACE("TUILockedSAS()\n");
|
||||||
|
|
||||||
|
@ -235,17 +237,23 @@ TUILockedSAS(
|
||||||
if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE))
|
if (!ReadString(IDS_ASKFORPASSWORD, Password, 256, FALSE))
|
||||||
return WLX_SAS_ACTION_NONE;
|
return WLX_SAS_ACTION_NONE;
|
||||||
|
|
||||||
if (!ConnectToLsa(pgContext))
|
Status = ConnectToLsa(pgContext);
|
||||||
return WLX_SAS_ACTION_NONE;
|
if (!NT_SUCCESS(Status))
|
||||||
|
|
||||||
if (!MyLogonUser(pgContext->LsaHandle,
|
|
||||||
pgContext->AuthenticationPackage,
|
|
||||||
UserName,
|
|
||||||
NULL,
|
|
||||||
Password,
|
|
||||||
&hToken))
|
|
||||||
{
|
{
|
||||||
WARN("LogonUserW() failed\n");
|
WARN("ConnectToLsa() failed\n");
|
||||||
|
return WLX_SAS_ACTION_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
Status = MyLogonUser(pgContext->LsaHandle,
|
||||||
|
pgContext->AuthenticationPackage,
|
||||||
|
UserName,
|
||||||
|
NULL,
|
||||||
|
Password,
|
||||||
|
&hToken,
|
||||||
|
&SubStatus);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
WARN("MyLogonUser() failed\n");
|
||||||
return WLX_SAS_ACTION_NONE;
|
return WLX_SAS_ACTION_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue