From 0b423f6a547fd7efb9e5aafbea66890c04d4e694 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 21 Sep 2016 06:19:22 +0000 Subject: [PATCH] [LSALIB][SECUR32] - Move LsaConnectUntrusted() from sdk/lib/lsalib/lsa.c to dll/win32/secur32/lsalpc.c as it is not exported from ntoskrnl. - Remove obsolete code from lsalib. svn path=/trunk/; revision=72754 --- reactos/dll/win32/secur32/lsalpc.c | 56 ++++++++++++++++++++++++++ reactos/sdk/lib/lsalib/lsa.c | 64 ------------------------------ 2 files changed, 56 insertions(+), 64 deletions(-) diff --git a/reactos/dll/win32/secur32/lsalpc.c b/reactos/dll/win32/secur32/lsalpc.c index 882243ef345..ac474b270a9 100644 --- a/reactos/dll/win32/secur32/lsalpc.c +++ b/reactos/dll/win32/secur32/lsalpc.c @@ -103,6 +103,62 @@ LsapOpenLsaPort(VOID) /* PUBLIC FUNCTIONS **********************************************************/ +/* + * @implemented + */ +NTSTATUS +NTAPI +LsaConnectUntrusted( + OUT PHANDLE LsaHandle) +{ + UNICODE_STRING PortName; + SECURITY_QUALITY_OF_SERVICE SecurityQos; + LSA_CONNECTION_INFO ConnectInfo; + ULONG ConnectInfoLength = sizeof(ConnectInfo); + NTSTATUS Status; + + TRACE("LsaConnectUntrusted(%p)\n", LsaHandle); + + // TODO: Wait on L"\\SECURITY\\LSA_AUTHENTICATION_INITIALIZED" event + // for the LSA server to be ready, and because we are untrusted, + // we may need to impersonate ourselves before! + + RtlInitUnicodeString(&PortName, + L"\\LsaAuthenticationPort"); + + SecurityQos.Length = sizeof(SecurityQos); + SecurityQos.ImpersonationLevel = SecurityIdentification; + SecurityQos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING; + SecurityQos.EffectiveOnly = TRUE; + + RtlZeroMemory(&ConnectInfo, + ConnectInfoLength); + + ConnectInfo.CreateContext = TRUE; + + Status = NtConnectPort(LsaHandle, + &PortName, + &SecurityQos, + NULL, + NULL, + NULL, + &ConnectInfo, + &ConnectInfoLength); + if (!NT_SUCCESS(Status)) + { + ERR("NtConnectPort failed (Status 0x%08lx)\n", Status); + return Status; + } + + if (!NT_SUCCESS(ConnectInfo.Status)) + { + ERR("ConnectInfo.Status: 0x%08lx\n", ConnectInfo.Status); + } + + return ConnectInfo.Status; +} + + /* * @implemented */ diff --git a/reactos/sdk/lib/lsalib/lsa.c b/reactos/sdk/lib/lsalib/lsa.c index 932abb3f1fd..935f32b9920 100644 --- a/reactos/sdk/lib/lsalib/lsa.c +++ b/reactos/sdk/lib/lsalib/lsa.c @@ -15,77 +15,13 @@ #include #include #include -// #include #include #define NDEBUG #include -/* GLOBALS *******************************************************************/ - -// FIXME: Do we really need this?! -#if !defined(__NTOSKRNL__) && !defined(_NTOSKRNL_) && !defined(_NTSYSTEM_) -extern HANDLE Secur32Heap; -#endif - /* FUNCTIONS *****************************************************************/ -/* This API is not defined and exported by NTOSKRNL */ -#if !defined(__NTOSKRNL__) && !defined(_NTOSKRNL_) && !defined(_NTSYSTEM_) -/* - * @implemented - */ -NTSTATUS -NTAPI -LsaConnectUntrusted(OUT PHANDLE LsaHandle) -{ - NTSTATUS Status; - UNICODE_STRING PortName; // = RTL_CONSTANT_STRING(L"\\LsaAuthenticationPort"); - SECURITY_QUALITY_OF_SERVICE SecurityQos; - LSA_CONNECTION_INFO ConnectInfo; - ULONG ConnectInfoLength = sizeof(ConnectInfo); - - DPRINT("LsaConnectUntrusted(%p)\n", LsaHandle); - - // TODO: Wait on L"\\SECURITY\\LSA_AUTHENTICATION_INITIALIZED" event - // for the LSA server to be ready, and because we are untrusted, - // we may need to impersonate ourselves before! - - RtlInitUnicodeString(&PortName, L"\\LsaAuthenticationPort"); - - SecurityQos.Length = sizeof(SecurityQos); - SecurityQos.ImpersonationLevel = SecurityIdentification; - SecurityQos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING; - SecurityQos.EffectiveOnly = TRUE; - - RtlZeroMemory(&ConnectInfo, - ConnectInfoLength); - - ConnectInfo.CreateContext = TRUE; - - Status = ZwConnectPort(LsaHandle, - &PortName, - &SecurityQos, - NULL, - NULL, - NULL, - &ConnectInfo, - &ConnectInfoLength); - if (!NT_SUCCESS(Status)) - { - DPRINT1("ZwConnectPort failed (Status 0x%08lx)\n", Status); - return Status; - } - - if (!NT_SUCCESS(ConnectInfo.Status)) - { - DPRINT1("ConnectInfo.Status: 0x%08lx\n", ConnectInfo.Status); - } - - return ConnectInfo.Status; -} -#endif - /* * @implemented */ -- 2.17.1