Author: hbelusca
Date: Wed Feb 8 02:37:58 2017
New Revision: 73753
URL:
http://svn.reactos.org/svn/reactos?rev=73753&view=rev
Log:
Add back ntlmssp and the old code of secur32 that were lost in syncs.
Added:
branches/sspi-bringup/reactos/dll/win32/ntlmssp/ (props changed)
- copied from r73749, branches/sspi-bringup/reactos/dll/win32/ntlmssp/
branches/sspi-bringup/reactos/dll/win32/secur32/secext.c
- copied unchanged from r73749,
branches/sspi-bringup/reactos/dll/win32/secur32/secext.c
branches/sspi-bringup/reactos/dll/win32/secur32/secur32.c
- copied unchanged from r73749,
branches/sspi-bringup/reactos/dll/win32/secur32/secur32.c
branches/sspi-bringup/reactos/dll/win32/secur32/sspap.c
- copied unchanged from r73749,
branches/sspi-bringup/reactos/dll/win32/secur32/sspap.c
Removed:
branches/sspi-bringup/reactos/dll/win32/secur32/lsalpc.c
Modified:
branches/sspi-bringup/reactos/dll/win32/CMakeLists.txt
branches/sspi-bringup/reactos/dll/win32/secur32/CMakeLists.txt
branches/sspi-bringup/reactos/dll/win32/secur32/dllmain.c (contents, props changed)
branches/sspi-bringup/reactos/dll/win32/secur32/precomp.h
branches/sspi-bringup/reactos/dll/win32/secur32/secur32.rc (contents, props
changed)
branches/sspi-bringup/reactos/dll/win32/secur32/secur32.spec
branches/sspi-bringup/reactos/dll/win32/secur32/secur32_priv.h (contents, props
changed)
branches/sspi-bringup/reactos/dll/win32/secur32/sspi.c
branches/sspi-bringup/reactos/dll/win32/secur32/stubs.c
branches/sspi-bringup/reactos/dll/win32/secur32/thunks.c (contents, props changed)
branches/sspi-bringup/reactos/dll/win32/secur32/thunks.h (contents, props changed)
branches/sspi-bringup/reactos/dll/win32/secur32/wrapper.c (contents, props changed)
Modified: branches/sspi-bringup/reactos/dll/win32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/CMakeLists.txt [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/CMakeLists.txt [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -138,6 +138,7 @@
add_subdirectory(npptools)
add_subdirectory(ntdsapi)
add_subdirectory(ntlanman)
+add_subdirectory(ntlmssp)
add_subdirectory(ntmarta)
add_subdirectory(ntprint)
add_subdirectory(objsel)
Propchange: branches/sspi-bringup/reactos/dll/win32/ntlmssp/
------------------------------------------------------------------------------
--- bugtraq:logregex (added)
+++ bugtraq:logregex Wed Feb 8 02:37:58 2017
@@ -0,0 +1,2 @@
+([Ii]ssue|[Bb]ug)s? #?(\d+)(,? ?#?(\d+))*(,? ?(and |or )?#?(\d+))?
+(\d+)
Propchange: branches/sspi-bringup/reactos/dll/win32/ntlmssp/
------------------------------------------------------------------------------
bugtraq:message = See issue #%BUGID% for more details.
Propchange: branches/sspi-bringup/reactos/dll/win32/ntlmssp/
------------------------------------------------------------------------------
bugtraq:url =
http://www.reactos.org/bugzilla/show_bug.cgi?id=%BUGID%
Propchange: branches/sspi-bringup/reactos/dll/win32/ntlmssp/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Wed Feb 8 02:37:58 2017
@@ -0,0 +1,13 @@
+/branches/GSoC_2011/GSoC_Network/dll/win32/ntlmssp:51548
+/branches/GSoC_2011/GSoC_TcpIpDriver/dll/win32/ntlmssp:51550
+/branches/GSoC_2011/TcpIpDriver/dll/win32/ntlmssp:51551-53074,53076-53119
+/branches/GSoC_Network/dll/win32/ntlmssp:51545-51546
+/branches/cmake-bringup/dll/win32/ntlmssp:50484,50693,50719,51544-52564
+/branches/header-work/dll/win32/ntlmssp:45691-47721
+/branches/reactos-yarotows/dll/win32/ntlmssp:45219-46371,46373-48025,48027-49273
+/branches/reactx/reactos/dll/win32/ntlmssp:49994-49995
+/branches/ros-amd64-bringup/dll/win32/ntlmssp:36852
+/branches/ros-amd64-bringup/reactos/dll/win32/ntlmssp:34711-34712,34741,34743,34770,34780-34782,34803,34812,34839,34842,34864,34870,34874,34877,34908-34909,34917,34965,35323-35324,35347-35348,35361,35436,35509,35515,35588,35655,35683,35739,35746,35762,35771,35777,35781,35789,35805,35823,35827,35902,35904-35906,35942,35947-35949,35952-35953,35966,36011-36013,36172,36360,36380,36388-36389,36393,36397,36443,36445,36475,36502-36503,36505,36570,36614,36852,36898-36899,36930,36936,36949,36951,36958,36961,36964,36969,36972,36987-36988,36990,36992,37019,37322-37323,37333-37334,37434,37472,37475,37536,37820-37821,37868-37869,37873,37990-37991,38013-38014,38092,38100,38148-38151,38264-38265,38268,38355,39151,39333,39335,39345,39639,40120,40122-40123,40125,40127-40128,40155,40247,40324,40608,40753,40926-40928,40986-40987,40989,40991,40993,40995-40996,41000-41001,41027-41030,41044-41045,41047-41050,41052,41070,41082-41086,41097-41098,41101,41449,41479-41480,41483-41485,41499-41500,41502,41531,41536,41540,41546-41547,41549,43080,43426,43451,43454,43506,43566,43574,43598,43600-43602,43604-43605,43677,43682,43757,43775,43836,43838-43840,43852,43857-43858,43860,43905-43907,43952,43954,43965,43969,43979,43981,43992,44002,44036-44037,44039-44040,44044-44045,44053,44065,44095,44123,44143-44144,44205,44238,44257,44259,44294,44338-44339,44385,44389,44391,44426,44460,44467-44468,44470-44471,44499,44501,44503-44504,44506,44510-44512,44521,44523-44526,44530,44540,44601,44634,44639,44772,44818,45124,45126-45127,45430,46394,46404,46478,46511,46523-46524,46526,46534-46535,46537-46539,46589,46805,46868,47472,47846-47847,47878,47882
+/branches/shell32_new-bringup/dll/win32/ntlmssp:51893-53652,53661,53700
+/branches/tcp-rewrite-branch/dll/win32/ntlmssp:48720,48840-48841,49424-49426,49454
+/trunk/reactos/dll/win32/ntlmssp:51592-54878
Propchange: branches/sspi-bringup/reactos/dll/win32/ntlmssp/
------------------------------------------------------------------------------
tsvn:logminsize = 10
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/CMakeLists.txt
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/CMakeLists.txt [iso-8859-1]
(original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/CMakeLists.txt [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -1,11 +1,13 @@
add_definitions(-D__SECUR32__)
-include_directories(${REACTOS_SOURCE_DIR}/include/reactos/subsys)
+include_directories(${REACTOS_SOURCE_DIR}/sdk/include/reactos/subsys)
spec2def(secur32.dll secur32.spec ADD_IMPORTLIB)
list(APPEND SOURCE
dllmain.c
- lsalpc.c
+ secext.c
+ secur32.c
+ sspap.c
sspi.c
stubs.c
thunks.c
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/dllmain.c
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/dllmain.c [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/dllmain.c [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -1,4 +1,5 @@
-/*
+/* $Id$
+ *
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/secur32/lsa.c
@@ -7,42 +8,25 @@
* Created 05/08/00
*/
-#include "precomp.h"
+/* INCLUDES ******************************************************************/
+#include <precomp.h>
-VOID LsapInitLsaPort(VOID);
-VOID LsapCloseLsaPort(VOID);
-
-/* GLOBALS *******************************************************************/
-
-HANDLE Secur32Heap;
+void SECUR32_initializeProviders(void);
+void SECUR32_freeProviders(void);
/* FUNCTIONS *****************************************************************/
-BOOL
-WINAPI
-DllMain(HINSTANCE hInstance,
- ULONG Reason,
- PVOID Reserved)
+BOOL WINAPI DllMain(HINSTANCE hInstance, ULONG Reason, PVOID Reserved)
{
switch (Reason)
{
- case DLL_PROCESS_ATTACH:
- Secur32Heap = RtlCreateHeap(0, NULL, 0, 4096, NULL, NULL);
- if (Secur32Heap == 0)
- {
- return FALSE;
- }
- LsapInitLsaPort();
- break;
-
- case DLL_PROCESS_DETACH:
- LsapCloseLsaPort();
- if (!RtlDestroyHeap(Secur32Heap))
- {
- return FALSE;
- }
- break;
+ case DLL_PROCESS_ATTACH:
+ DisableThreadLibraryCalls(hInstance);
+ SECUR32_initializeProviders();
+ break;
+ case DLL_PROCESS_DETACH:
+ SECUR32_freeProviders();
+ break;
}
-
- return TRUE;
+ return(TRUE);
}
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/dllmain.c
------------------------------------------------------------------------------
svn:keywords = author date id revision
Removed: branches/sspi-bringup/reactos/dll/win32/secur32/lsalpc.c
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/lsalpc.c [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/lsalpc.c (removed)
@@ -1,242 +0,0 @@
-/*
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS system libraries
- * FILE: dll/win32/secur32/lsalpc.c
- * PURPOSE: LSA LPC port functions
- */
-
-/* INCLUDES ******************************************************************/
-
-#include "precomp.h"
-
-#include <ndk/lpctypes.h>
-#include <ndk/lpcfuncs.h>
-#include <ndk/mmfuncs.h>
-#include <ndk/rtlfuncs.h>
-#include <ndk/obfuncs.h>
-#include <psdk/ntsecapi.h>
-#include <lsass/lsass.h>
-
-#include <wine/debug.h>
-WINE_DEFAULT_DEBUG_CHANNEL(secur32);
-
-
-/* GLOBALS *******************************************************************/
-
-HANDLE LsaPortHandle;
-
-extern HANDLE Secur32Heap;
-
-
-/* FUNCTIONS *****************************************************************/
-
-VOID
-LsapInitLsaPort(VOID)
-{
- LsaPortHandle = NULL;
-}
-
-
-VOID
-LsapCloseLsaPort(VOID)
-{
- if (LsaPortHandle != NULL)
- {
- NtClose(LsaPortHandle);
- LsaPortHandle = NULL;
- }
-}
-
-
-NTSTATUS
-LsapOpenLsaPort(VOID)
-{
- UNICODE_STRING PortName;
- SECURITY_QUALITY_OF_SERVICE SecurityQos;
- LSA_CONNECTION_INFO ConnectInfo;
- ULONG ConnectInfoLength;
- NTSTATUS Status;
-
- TRACE("LsapOpenLsaPort()\n");
-
- if (LsaPortHandle != NULL)
- return STATUS_SUCCESS;
-
- RtlInitUnicodeString(&PortName,
- L"\\LsaAuthenticationPort");
-
- SecurityQos.Length = sizeof(SecurityQos);
- SecurityQos.ImpersonationLevel = SecurityIdentification;
- SecurityQos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING;
- SecurityQos.EffectiveOnly = TRUE;
-
- RtlZeroMemory(&ConnectInfo,
- sizeof(ConnectInfo));
-
- ConnectInfo.CreateContext = FALSE;
-
- ConnectInfoLength = sizeof(LSA_CONNECTION_INFO);
- Status = NtConnectPort(&LsaPortHandle,
- &PortName,
- &SecurityQos,
- NULL,
- NULL,
- NULL,
- &ConnectInfo,
- &ConnectInfoLength);
- if (!NT_SUCCESS(Status))
- {
- TRACE("NtConnectPort failed (Status 0x%08lx)\n", Status);
- }
-
- return Status;
-/*
- if (!NT_SUCCESS(ConnectInfo.Status))
- {
- DPRINT1("ConnectInfo.Status: 0x%08lx\n", ConnectInfo.Status);
- }
-
- return ConnectInfo.Status;
-*/
-}
-
-
-/* PUBLIC FUNCTIONS **********************************************************/
-
-/*
- * @implemented
- */
-NTSTATUS
-NTAPI
-LsaEnumerateLogonSessions(
- PULONG LogonSessionCount,
- PLUID *LogonSessionList)
-{
-#if 1
- LSA_API_MSG ApiMessage;
- NTSTATUS Status;
-
- TRACE("LsaEnumerateLogonSessions(%p %p)\n", LogonSessionCount,
LogonSessionList);
-
- Status = LsapOpenLsaPort();
- if (!NT_SUCCESS(Status))
- return Status;
-
- ApiMessage.ApiNumber = LSASS_REQUEST_ENUM_LOGON_SESSIONS;
- ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.EnumLogonSessions);
- ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
- ApiMessage.h.u2.ZeroInit = 0;
-
- Status = NtRequestWaitReplyPort(LsaPortHandle,
- (PPORT_MESSAGE)&ApiMessage,
- (PPORT_MESSAGE)&ApiMessage);
- if (!NT_SUCCESS(Status))
- {
- ERR("NtRequestWaitReplyPort() failed (Status 0x%08lx)\n", Status);
- return Status;
- }
-
- if (!NT_SUCCESS(ApiMessage.Status))
- {
- ERR("NtRequestWaitReplyPort() failed (ApiMessage.Status 0x%08lx)\n",
ApiMessage.Status);
- return ApiMessage.Status;
- }
-
- *LogonSessionCount = ApiMessage.EnumLogonSessions.Reply.LogonSessionCount;
- *LogonSessionList = ApiMessage.EnumLogonSessions.Reply.LogonSessionBuffer;
-
- return Status;
-#else
- UNIMPLEMENTED;
- return STATUS_NOT_IMPLEMENTED;
-#endif
-}
-
-
-/*
- * @unimplemented
- */
-NTSTATUS
-NTAPI
-LsaGetLogonSessionData(
- PLUID LogonId,
- PSECURITY_LOGON_SESSION_DATA *ppLogonSessionData)
-{
-#if 1
- LSA_API_MSG ApiMessage;
- PSECURITY_LOGON_SESSION_DATA SessionData;
- NTSTATUS Status;
-
- TRACE("LsaGetLogonSessionData(%p %p)\n", LogonId, ppLogonSessionData);
-
- Status = LsapOpenLsaPort();
- if (!NT_SUCCESS(Status))
- return Status;
-
- ApiMessage.ApiNumber = LSASS_REQUEST_GET_LOGON_SESSION_DATA;
- ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.GetLogonSessionData);
- ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
- ApiMessage.h.u2.ZeroInit = 0;
-
- RtlCopyLuid(&ApiMessage.GetLogonSessionData.Request.LogonId,
- LogonId);
-
- Status = NtRequestWaitReplyPort(LsaPortHandle,
- (PPORT_MESSAGE)&ApiMessage,
- (PPORT_MESSAGE)&ApiMessage);
- if (!NT_SUCCESS(Status))
- {
- ERR("NtRequestWaitReplyPort() failed (Status 0x%08lx)\n", Status);
- return Status;
- }
-
- if (!NT_SUCCESS(ApiMessage.Status))
- {
- ERR("NtRequestWaitReplyPort() failed (ApiMessage.Status 0x%08lx)\n",
ApiMessage.Status);
- return ApiMessage.Status;
- }
-
- SessionData = ApiMessage.GetLogonSessionData.Reply.SessionDataBuffer;
-
- if (SessionData->UserName.Buffer != NULL)
- SessionData->UserName.Buffer =
(LPWSTR)((ULONG_PTR)&SessionData->UserName.Buffer +
(ULONG_PTR)SessionData->UserName.Buffer);
-
- if (SessionData->Sid != NULL)
- SessionData->Sid = (LPWSTR)((ULONG_PTR)&SessionData->Sid +
(ULONG_PTR)SessionData->Sid);
-
- *ppLogonSessionData = SessionData;
-
- return Status;
-#else
- UNIMPLEMENTED;
- return STATUS_NOT_IMPLEMENTED;
-#endif
-}
-
-
-/*
- * @unimplemented
- */
-NTSTATUS
-NTAPI
-LsaRegisterPolicyChangeNotification(POLICY_NOTIFICATION_INFORMATION_CLASS
InformationClass,
- HANDLE NotificationEventHandle)
-{
- UNIMPLEMENTED;
- return STATUS_NOT_IMPLEMENTED;
-}
-
-
-/*
- * @unimplemented
- */
-NTSTATUS
-NTAPI
-LsaUnregisterPolicyChangeNotification(POLICY_NOTIFICATION_INFORMATION_CLASS
InformationClass,
- HANDLE NotificationEventHandle)
-{
- UNIMPLEMENTED;
- return STATUS_NOT_IMPLEMENTED;
-}
-
-/* EOF */
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/precomp.h
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/precomp.h [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/precomp.h [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -6,26 +6,32 @@
* PROGRAMMER: Alex Ionescu (alex(a)relsoft.net)
*/
-#ifndef _SECUR32_PCH_
-#define _SECUR32_PCH_
+/* INCLUDES ******************************************************************/
+/* SDK/DDK/NDK Headers. */
+
+#include <assert.h>
#include <stdarg.h>
-/* SDK/DDK/NDK Headers. */
+#include <ntstatus.h>
#define WIN32_NO_STATUS
-#define _INC_WINDOWS
-#define COM_NO_WINDOWS_H
-#include <windef.h>
-#include <winbase.h>
-#include <winnls.h>
-#include <winreg.h>
+#include <windows.h>
#define NTOS_MODE_USER
-#include <ndk/rtlfuncs.h>
-
+#include <ntndk.h>
+#include <lsass/lsass.h>
+#define SECURITY_WIN32
+#define _NO_KSECDD_IMPORT_
+#include <ntsecapi.h>
#include <secext.h>
#include <security.h>
+#include <ntsecpkg.h>
+#include <sspi.h>
+#include "lmcons.h"
#include "secur32_priv.h"
#include "thunks.h"
-#endif /* _SECUR32_PCH_ */
+
+extern SecurityFunctionTableA securityFunctionTableA;
+extern SecurityFunctionTableW securityFunctionTableW;
+
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/secur32.rc
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/secur32.rc [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/secur32.rc [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -1,5 +1,7 @@
+/* $Id$ */
+
#define REACTOS_VERSION_DLL
-#define REACTOS_STR_FILE_DESCRIPTION "Security"
-#define REACTOS_STR_INTERNAL_NAME "secur32"
-#define REACTOS_STR_ORIGINAL_FILENAME "secur32.dll"
+#define REACTOS_STR_FILE_DESCRIPTION "Security\0"
+#define REACTOS_STR_INTERNAL_NAME "secur32\0"
+#define REACTOS_STR_ORIGINAL_FILENAME "secur32.dll\0"
#include <reactos/version.rc>
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/secur32.rc
------------------------------------------------------------------------------
svn:keywords = author date id revision
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/secur32.spec
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/secur32.spec [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/secur32.spec [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -1,3 +1,5 @@
+@ stub SecDeleteUserModeContext
+@ stub SecInitUserModeContext
@ stdcall AcceptSecurityContext(ptr ptr ptr long long ptr ptr ptr ptr)
@ stdcall AcquireCredentialsHandleA(str str long ptr ptr ptr ptr ptr ptr)
@ stdcall AcquireCredentialsHandleW(wstr wstr long ptr ptr ptr ptr ptr ptr)
@@ -8,7 +10,7 @@
@ stdcall ApplyControlToken(ptr ptr)
@ stdcall CompleteAuthToken(ptr ptr)
@ stub CredMarshalTargetInfo
-@ stub CredUnmarshalTargetInfo
+@ stub CredUnMarshalTargetInfo
@ stdcall DecryptMessage(ptr ptr long ptr)
@ stdcall DeleteSecurityContext(ptr)
@ stdcall DeleteSecurityPackageA(str)
@@ -54,23 +56,24 @@
@ stub SaslAcceptSecurityContext
@ stub SaslEnumerateProfilesA
@ stub SaslEnumerateProfilesW
+@ stub SaslGetContextOption
@ stub SaslGetProfilePackageA
@ stub SaslGetProfilePackageW
@ stub SaslIdentifyPackageA
@ stub SaslIdentifyPackageW
@ stub SaslInitializeSecurityContextA
@ stub SaslInitializeSecurityContextW
-@ stdcall SealMessage(ptr long ptr long) EncryptMessage
+@ stub SaslContextOption
+@ stdcall SealMessage (ptr long ptr long)
@ stub SecCacheSspiPackages
-@ stub SecDeleteUserModeContext
-@ stub SecGetLocaleSpecificEncryptionRules # not on win32k3 x64
-@ stub SecInitUserModeContext
@ stub SecpFreeMemory
@ stub SecpTranslateName
@ stub SecpTranslateNameEx
@ stdcall SetContextAttributesA(ptr long ptr long)
@ stdcall SetContextAttributesW(ptr long ptr long)
+@ stub SetCredentialsAttributesA
+@ stub SetCredentialsAttributesW
@ stdcall TranslateNameA(str long long ptr ptr)
@ stdcall TranslateNameW(wstr long long ptr ptr)
-@ stdcall UnsealMessage(ptr ptr long ptr) DecryptMessage
+@ stdcall UnsealMessage(ptr ptr long ptr)
@ stdcall VerifySignature(ptr ptr long ptr)
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/secur32_priv.h
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/secur32_priv.h [iso-8859-1]
(original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/secur32_priv.h [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -21,7 +21,19 @@
#ifndef __SECUR32_PRIV_H__
#define __SECUR32_PRIV_H__
-#include <wine/list.h>
+#include <sys/types.h>
+#include "wine/list.h"
+
+
+typedef struct _SecureProviderAp
+{
+ struct list entry;
+ BOOL loaded;
+ PWSTR moduleName;
+ HMODULE lib;
+ SecurityFunctionTableA fnTableA;
+ SecurityFunctionTableW fnTableW;
+} SecureProviderAp;
typedef struct _SecureProvider
{
@@ -40,18 +52,57 @@
SecureProvider *provider;
} SecurePackage;
+typedef struct _SecurePackageTable
+{
+ DWORD numPackages;
+ DWORD numAllocated;
+ struct list table;
+} SecurePackageTable;
+
+typedef struct _SecureProviderTable
+{
+ DWORD numProviders;
+ DWORD numAllocated;
+ struct list table;
+} SecureProviderTable;
+
+/* Tries to load moduleName as a provider. If successful, enumerates what
+ * packages it can and adds them to the package and provider tables. Resizes
+ * tables as necessary.
+ */
+BOOL LoadSSPProvider(PWSTR moduleName);
+
+BOOL LoadSSPAPProvider(PWSTR moduleName);
+
+
+/* Allocates space for and initializes a new provider. If fnTableA or fnTableW
+ * is non-NULL, assumes the provider is built-in, and if moduleName is non-NULL,
+ * means must load the LSA/user mode functions tables from external SSP/AP module.
+ * Otherwise moduleName must not be NULL.
+ * Returns a pointer to the stored provider entry, for use adding packages.
+ */
+SecureProvider *SECUR32_addProvider(const SecurityFunctionTableA *fnTableA,
+ const SecurityFunctionTableW *fnTableW, PCWSTR moduleName);
+
+/* Allocates space for and adds toAdd packages with the given provider.
+ * provider must not be NULL, and either infoA or infoW may be NULL, but not
+ * both.
+ */
+void SECUR32_addPackages(SecureProvider *provider, ULONG toAdd,
+ const SecPkgInfoA *infoA, const SecPkgInfoW *infoW);
+
/* Tries to find the package named packageName. If it finds it, implicitly
* loads the package if it isn't already loaded.
*/
-SecurePackage *SECUR32_findPackageW(PCWSTR packageName) DECLSPEC_HIDDEN;
+SecurePackage *SECUR32_findPackageW(PCWSTR packageName);
/* Tries to find the package named packageName. (Thunks to _findPackageW)
*/
-SecurePackage *SECUR32_findPackageA(PCSTR packageName) DECLSPEC_HIDDEN;
+SecurePackage *SECUR32_findPackageA(PCSTR packageName);
/* A few string helpers; will return NULL if str is NULL. Free return with
* HeapFree */
-PWSTR SECUR32_AllocWideFromMultiByte(PCSTR str) DECLSPEC_HIDDEN;
-PSTR SECUR32_AllocMultiByteFromWide(PCWSTR str) DECLSPEC_HIDDEN;
+PWSTR SECUR32_AllocWideFromMultiByte(PCSTR str);
+PSTR SECUR32_AllocMultiByteFromWide(PCWSTR str);
-#endif /* ndef __SECUR32_PRIV_H__ */
+#endif
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/secur32_priv.h
------------------------------------------------------------------------------
--- charset (original)
+++ charset (removed)
@@ -1 +0,0 @@
-UTF-8
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/secur32_priv.h
------------------------------------------------------------------------------
--- svn:mime-type (original)
+++ svn:mime-type (removed)
@@ -1 +0,0 @@
-text/plain
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/sspi.c
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/sspi.c [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/sspi.c [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -1,60 +1,16 @@
-/* Copyright (C) 2004 Juan Lang
- *
- * This file implements loading of SSP DLLs.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#include "precomp.h"
-
-#include <assert.h>
-#include <lsass/lsass.h>
-
-#include <wine/debug.h>
+#include <precomp.h>
+
+#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(secur32);
-#define UNLEN 256
-
-typedef struct _SecurePackageTable
-{
- DWORD numPackages;
- DWORD numAllocated;
- struct list table;
-} SecurePackageTable;
-
-typedef struct _SecureProviderTable
-{
- DWORD numProviders;
- DWORD numAllocated;
- struct list table;
-} SecureProviderTable;
-
-static void SECUR32_initializeProviders(void);
-
-static CRITICAL_SECTION cs;
-static CRITICAL_SECTION_DEBUG cs_debug =
-{
- 0, 0, &cs,
- { &cs_debug.ProcessLocksList, &cs_debug.ProcessLocksList },
- 0, 0, { (DWORD_PTR)(__FILE__ ": cs") }
-};
-static CRITICAL_SECTION cs = { &cs_debug, -1, 0, 0, 0, 0 };
-static SecurePackageTable *packageTable = NULL;
-static SecureProviderTable *providerTable = NULL;
-
-static SecurityFunctionTableA securityFunctionTableA = {
+extern CRITICAL_SECTION cs;
+extern SecurePackageTable *packageTable;
+
+SECURITY_STATUS WINAPI ApplyControlTokenW(PCtxtHandle Handle, PSecBufferDesc Buffer);
+SECURITY_STATUS WINAPI ApplyControlTokenA(PCtxtHandle Handle, PSecBufferDesc Buffer);
+
+SecurityFunctionTableA securityFunctionTableA =
+{
SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION,
EnumerateSecurityPackagesA,
QueryCredentialsAttributesA,
@@ -65,7 +21,7 @@
AcceptSecurityContext,
CompleteAuthToken,
DeleteSecurityContext,
- ApplyControlToken,
+ ApplyControlTokenA,
QueryContextAttributesA,
ImpersonateSecurityContext,
RevertSecurityContext,
@@ -85,7 +41,8 @@
NULL
};
-static SecurityFunctionTableW securityFunctionTableW = {
+SecurityFunctionTableW securityFunctionTableW =
+{
SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION,
EnumerateSecurityPackagesW,
QueryCredentialsAttributesW,
@@ -96,7 +53,7 @@
AcceptSecurityContext,
CompleteAuthToken,
DeleteSecurityContext,
- ApplyControlToken,
+ ApplyControlTokenW,
QueryContextAttributesW,
ImpersonateSecurityContext,
RevertSecurityContext,
@@ -116,535 +73,6 @@
NULL
};
-/***********************************************************************
- * InitSecurityInterfaceA (SECUR32.@)
- */
-PSecurityFunctionTableA WINAPI InitSecurityInterfaceA(void)
-{
- TRACE("InitSecurityInterfaceA() called\n");
- return &securityFunctionTableA;
-}
-
-/***********************************************************************
- * InitSecurityInterfaceW (SECUR32.@)
- */
-PSecurityFunctionTableW WINAPI InitSecurityInterfaceW(void)
-{
- TRACE("InitSecurityInterfaceW() called\n");
- return &securityFunctionTableW;
-}
-
-static PWSTR SECUR32_strdupW(PCWSTR str)
-{
- PWSTR ret;
-
- if (str)
- {
- ret = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(str) + 1) * sizeof(WCHAR));
- if (ret)
- lstrcpyW(ret, str);
- }
- else
- ret = NULL;
- return ret;
-}
-
-PWSTR SECUR32_AllocWideFromMultiByte(PCSTR str)
-{
- PWSTR ret;
-
- if (str)
- {
- int charsNeeded = MultiByteToWideChar(CP_ACP, 0, str, -1, NULL, 0);
-
- if (charsNeeded)
- {
- ret = HeapAlloc(GetProcessHeap(), 0, charsNeeded * sizeof(WCHAR));
- if (ret)
- MultiByteToWideChar(CP_ACP, 0, str, -1, ret, charsNeeded);
- }
- else
- ret = NULL;
- }
- else
- ret = NULL;
- return ret;
-}
-
-PSTR SECUR32_AllocMultiByteFromWide(PCWSTR str)
-{
- PSTR ret;
-
- if (str)
- {
- int charsNeeded = WideCharToMultiByte(CP_ACP, 0, str, -1, NULL, 0,
- NULL, NULL);
-
- if (charsNeeded)
- {
- ret = HeapAlloc(GetProcessHeap(), 0, charsNeeded);
- if (ret)
- WideCharToMultiByte(CP_ACP, 0, str, -1, ret, charsNeeded,
- NULL, NULL);
- }
- else
- ret = NULL;
- }
- else
- ret = NULL;
- return ret;
-}
-
-static void _makeFnTableA(PSecurityFunctionTableA fnTableA,
- const SecurityFunctionTableA *inFnTableA,
- const SecurityFunctionTableW *inFnTableW)
-{
- if (fnTableA)
- {
- if (inFnTableA)
- {
- /* The size of the version 1 table is based on platform sdk's
- * sspi.h, though the sample ssp also provided with platform sdk
- * implies only functions through QuerySecurityPackageInfoA are
- * implemented (yikes)
- */
- size_t tableSize = inFnTableA->dwVersion == 1 ?
- (const BYTE *)&inFnTableA->SetContextAttributesA -
- (const BYTE *)inFnTableA : sizeof(SecurityFunctionTableA);
-
- memcpy(fnTableA, inFnTableA, tableSize);
- /* override this, since we can do it internally anyway */
- fnTableA->QuerySecurityPackageInfoA =
- QuerySecurityPackageInfoA;
- }
- else if (inFnTableW)
- {
- /* functions with thunks */
- if (inFnTableW->AcquireCredentialsHandleW)
- fnTableA->AcquireCredentialsHandleA =
- thunk_AcquireCredentialsHandleA;
- if (inFnTableW->InitializeSecurityContextW)
- fnTableA->InitializeSecurityContextA =
- thunk_InitializeSecurityContextA;
- if (inFnTableW->ImportSecurityContextW)
- fnTableA->ImportSecurityContextA =
- thunk_ImportSecurityContextA;
- if (inFnTableW->AddCredentialsW)
- fnTableA->AddCredentialsA =
- thunk_AddCredentialsA;
- if (inFnTableW->QueryCredentialsAttributesW)
- fnTableA->QueryCredentialsAttributesA =
- thunk_QueryCredentialsAttributesA;
- if (inFnTableW->QueryContextAttributesW)
- fnTableA->QueryContextAttributesA =
- thunk_QueryContextAttributesA;
- if (inFnTableW->SetContextAttributesW)
- fnTableA->SetContextAttributesA =
- thunk_SetContextAttributesA;
- /* this can't be thunked, there's no extra param to know which
- * package to forward to */
- fnTableA->EnumerateSecurityPackagesA = NULL;
- /* functions with no thunks needed */
- fnTableA->AcceptSecurityContext = inFnTableW->AcceptSecurityContext;
- fnTableA->CompleteAuthToken = inFnTableW->CompleteAuthToken;
- fnTableA->DeleteSecurityContext = inFnTableW->DeleteSecurityContext;
- fnTableA->ImpersonateSecurityContext =
- inFnTableW->ImpersonateSecurityContext;
- fnTableA->RevertSecurityContext = inFnTableW->RevertSecurityContext;
- fnTableA->MakeSignature = inFnTableW->MakeSignature;
- fnTableA->VerifySignature = inFnTableW->VerifySignature;
- fnTableA->FreeContextBuffer = inFnTableW->FreeContextBuffer;
- fnTableA->QuerySecurityPackageInfoA =
- QuerySecurityPackageInfoA;
- fnTableA->ExportSecurityContext =
- inFnTableW->ExportSecurityContext;
- fnTableA->QuerySecurityContextToken =
- inFnTableW->QuerySecurityContextToken;
- fnTableA->EncryptMessage = inFnTableW->EncryptMessage;
- fnTableA->DecryptMessage = inFnTableW->DecryptMessage;
- }
- }
-}
-
-static void _makeFnTableW(PSecurityFunctionTableW fnTableW,
- const SecurityFunctionTableA *inFnTableA,
- const SecurityFunctionTableW *inFnTableW)
-{
- if (fnTableW)
- {
- if (inFnTableW)
- {
- /* The size of the version 1 table is based on platform sdk's
- * sspi.h, though the sample ssp also provided with platform sdk
- * implies only functions through QuerySecurityPackageInfoA are
- * implemented (yikes)
- */
- size_t tableSize = inFnTableW->dwVersion == 1 ?
- (const BYTE *)&inFnTableW->SetContextAttributesW -
- (const BYTE *)inFnTableW : sizeof(SecurityFunctionTableW);
-
- memcpy(fnTableW, inFnTableW, tableSize);
- /* override this, since we can do it internally anyway */
- fnTableW->QuerySecurityPackageInfoW =
- QuerySecurityPackageInfoW;
- }
- else if (inFnTableA)
- {
- /* functions with thunks */
- if (inFnTableA->AcquireCredentialsHandleA)
- fnTableW->AcquireCredentialsHandleW =
- thunk_AcquireCredentialsHandleW;
- if (inFnTableA->InitializeSecurityContextA)
- fnTableW->InitializeSecurityContextW =
- thunk_InitializeSecurityContextW;
- if (inFnTableA->ImportSecurityContextA)
- fnTableW->ImportSecurityContextW =
- thunk_ImportSecurityContextW;
- if (inFnTableA->AddCredentialsA)
- fnTableW->AddCredentialsW =
- thunk_AddCredentialsW;
- if (inFnTableA->QueryCredentialsAttributesA)
- fnTableW->QueryCredentialsAttributesW =
- thunk_QueryCredentialsAttributesW;
- if (inFnTableA->QueryContextAttributesA)
- fnTableW->QueryContextAttributesW =
- thunk_QueryContextAttributesW;
- if (inFnTableA->SetContextAttributesA)
- fnTableW->SetContextAttributesW =
- thunk_SetContextAttributesW;
- /* this can't be thunked, there's no extra param to know which
- * package to forward to */
- fnTableW->EnumerateSecurityPackagesW = NULL;
- /* functions with no thunks needed */
- fnTableW->AcceptSecurityContext = inFnTableA->AcceptSecurityContext;
- fnTableW->CompleteAuthToken = inFnTableA->CompleteAuthToken;
- fnTableW->DeleteSecurityContext = inFnTableA->DeleteSecurityContext;
- fnTableW->ImpersonateSecurityContext =
- inFnTableA->ImpersonateSecurityContext;
- fnTableW->RevertSecurityContext = inFnTableA->RevertSecurityContext;
- fnTableW->MakeSignature = inFnTableA->MakeSignature;
- fnTableW->VerifySignature = inFnTableA->VerifySignature;
- fnTableW->FreeContextBuffer = inFnTableA->FreeContextBuffer;
- fnTableW->QuerySecurityPackageInfoW =
- QuerySecurityPackageInfoW;
- fnTableW->ExportSecurityContext =
- inFnTableA->ExportSecurityContext;
- fnTableW->QuerySecurityContextToken =
- inFnTableA->QuerySecurityContextToken;
- fnTableW->EncryptMessage = inFnTableA->EncryptMessage;
- fnTableW->DecryptMessage = inFnTableA->DecryptMessage;
- }
- }
-}
-
-static void _copyPackageInfo(PSecPkgInfoW info, const SecPkgInfoA *inInfoA,
- const SecPkgInfoW *inInfoW)
-{
- if (info && (inInfoA || inInfoW))
- {
- /* odd, I know, but up until Name and Comment the structures are
- * identical
- */
- memcpy(info, inInfoW ? inInfoW : (const SecPkgInfoW *)inInfoA, sizeof(*info));
- if (inInfoW)
- {
- info->Name = SECUR32_strdupW(inInfoW->Name);
- info->Comment = SECUR32_strdupW(inInfoW->Comment);
- }
- else
- {
- info->Name = SECUR32_AllocWideFromMultiByte(inInfoA->Name);
- info->Comment = SECUR32_AllocWideFromMultiByte(inInfoA->Comment);
- }
- }
-}
-
-static
-SecureProvider *SECUR32_addProvider(const SecurityFunctionTableA *fnTableA,
- const SecurityFunctionTableW *fnTableW, PCWSTR moduleName)
-{
- SecureProvider *ret;
-
- EnterCriticalSection(&cs);
-
- if (!providerTable)
- {
- providerTable = HeapAlloc(GetProcessHeap(), 0, sizeof(SecureProviderTable));
- if (!providerTable)
- {
- LeaveCriticalSection(&cs);
- return NULL;
- }
-
- list_init(&providerTable->table);
- }
-
- ret = HeapAlloc(GetProcessHeap(), 0, sizeof(SecureProvider));
- if (!ret)
- {
- LeaveCriticalSection(&cs);
- return NULL;
- }
-
- list_add_tail(&providerTable->table, &ret->entry);
- ret->lib = NULL;
-
- if (fnTableA || fnTableW)
- {
- ret->moduleName = moduleName ? SECUR32_strdupW(moduleName) : NULL;
- _makeFnTableA(&ret->fnTableA, fnTableA, fnTableW);
- _makeFnTableW(&ret->fnTableW, fnTableA, fnTableW);
- ret->loaded = !moduleName;
- }
- else
- {
- ret->moduleName = SECUR32_strdupW(moduleName);
- ret->loaded = FALSE;
- }
-
- LeaveCriticalSection(&cs);
- return ret;
-}
-
-static
-void SECUR32_addPackages(SecureProvider *provider, ULONG toAdd,
- const SecPkgInfoA *infoA, const SecPkgInfoW *infoW)
-{
- ULONG i;
-
- assert(provider);
- assert(infoA || infoW);
-
- EnterCriticalSection(&cs);
-
- if (!packageTable)
- {
- packageTable = HeapAlloc(GetProcessHeap(), 0, sizeof(SecurePackageTable));
- if (!packageTable)
- {
- LeaveCriticalSection(&cs);
- return;
- }
-
- packageTable->numPackages = 0;
- list_init(&packageTable->table);
- }
-
- for (i = 0; i < toAdd; i++)
- {
- SecurePackage *package = HeapAlloc(GetProcessHeap(), 0, sizeof(SecurePackage));
- if (!package)
- continue;
-
- list_add_tail(&packageTable->table, &package->entry);
-
- package->provider = provider;
- _copyPackageInfo(&package->infoW,
- infoA ? &infoA[i] : NULL,
- infoW ? &infoW[i] : NULL);
- }
- packageTable->numPackages += toAdd;
-
- LeaveCriticalSection(&cs);
-}
-
-static void _tryLoadProvider(PWSTR moduleName)
-{
- HMODULE lib = LoadLibraryW(moduleName);
-
- if (lib)
- {
- INIT_SECURITY_INTERFACE_W pInitSecurityInterfaceW =
- (INIT_SECURITY_INTERFACE_W)GetProcAddress(lib,
- SECURITY_ENTRYPOINT_ANSIW);
- INIT_SECURITY_INTERFACE_A pInitSecurityInterfaceA =
- (INIT_SECURITY_INTERFACE_A)GetProcAddress(lib,
- SECURITY_ENTRYPOINT_ANSIA);
-
- TRACE("loaded %s, InitSecurityInterfaceA is %p, InitSecurityInterfaceW is
%p\n",
- debugstr_w(moduleName), pInitSecurityInterfaceA,
- pInitSecurityInterfaceW);
- if (pInitSecurityInterfaceW || pInitSecurityInterfaceA)
- {
- PSecurityFunctionTableA fnTableA = NULL;
- PSecurityFunctionTableW fnTableW = NULL;
- ULONG toAdd = 0;
- PSecPkgInfoA infoA = NULL;
- PSecPkgInfoW infoW = NULL;
- SECURITY_STATUS ret = SEC_E_OK;
-
- if (pInitSecurityInterfaceA)
- fnTableA = pInitSecurityInterfaceA();
- if (pInitSecurityInterfaceW)
- fnTableW = pInitSecurityInterfaceW();
- if (fnTableW && fnTableW->EnumerateSecurityPackagesW)
- {
- if (fnTableW != &securityFunctionTableW)
- ret = fnTableW->EnumerateSecurityPackagesW(&toAdd,
&infoW);
- else
- TRACE("%s has built-in providers, skip adding\n",
debugstr_w(moduleName));
- }
- else if (fnTableA && fnTableA->EnumerateSecurityPackagesA)
- {
- if (fnTableA != &securityFunctionTableA)
- ret = fnTableA->EnumerateSecurityPackagesA(&toAdd,
&infoA);
- else
- TRACE("%s has built-in providers, skip adding\n",
debugstr_w(moduleName));
- }
- if (ret == SEC_E_OK && toAdd > 0 && (infoW || infoA))
- {
- SecureProvider *provider = SECUR32_addProvider(NULL, NULL,
- moduleName);
-
- if (provider)
- SECUR32_addPackages(provider, toAdd, infoA, infoW);
- if (infoW)
- fnTableW->FreeContextBuffer(infoW);
- else
- fnTableA->FreeContextBuffer(infoA);
- }
- }
- FreeLibrary(lib);
- }
- else
- WARN("failed to load %s\n", debugstr_w(moduleName));
-}
-
-static const WCHAR securityProvidersKeyW[] = {
-
'S','Y','S','T','E','M','\\','C','u','r','r','e','n','t','C','o','n','t','r',
-
'o','l','S','e','t','\\','C','o','n','t','r','o','l','\\','S','e','c','u','r',
-
'i','t','y','P','r','o','v','i','d','e','r','s','\0'
- };
-static const WCHAR securityProvidersW[] = {
-
'S','e','c','u','r','i','t','y','P','r','o','v','i','d','e','r','s',0
- };
-
- /* FIXME: we're missing SECUR32_freeProviders, so all of this gets leaked */
-static void SECUR32_initializeProviders(void)
-{
- HKEY key;
- LSTATUS apiRet;
-
- /* Now load providers from registry */
- apiRet = RegOpenKeyExW(HKEY_LOCAL_MACHINE, securityProvidersKeyW, 0,
- KEY_READ, &key);
- if (apiRet == ERROR_SUCCESS)
- {
- WCHAR securityPkgNames[MAX_PATH]; /* arbitrary len */
- DWORD size = sizeof(securityPkgNames) / sizeof(WCHAR), type;
-
- apiRet = RegQueryValueExW(key, securityProvidersW, NULL, &type,
- (PBYTE)securityPkgNames, &size);
- if (apiRet == ERROR_SUCCESS && type == REG_SZ)
- {
- WCHAR *ptr;
-
- size = size / sizeof(WCHAR);
- for (ptr = securityPkgNames;
- ptr < securityPkgNames + size; )
- {
- WCHAR *comma;
-
- for (comma = ptr; *comma && *comma != ','; comma++)
- ;
- if (*comma == ',')
- *comma = '\0';
- for (; *ptr && isspace(*ptr) && ptr < securityPkgNames
+ size;
- ptr++)
- ;
- if (*ptr)
- _tryLoadProvider(ptr);
- ptr += lstrlenW(ptr) + 1;
- }
- }
- RegCloseKey(key);
- }
-}
-
-SecurePackage *SECUR32_findPackageW(PCWSTR packageName)
-{
- SecurePackage *ret = NULL;
- BOOL matched = FALSE;
-
-#ifdef __REACTOS__
- if (!packageTable)
- SECUR32_initializeProviders();
-#endif
-
- if (packageTable && packageName)
- {
- LIST_FOR_EACH_ENTRY(ret, &packageTable->table, SecurePackage, entry)
- {
- matched = !lstrcmpiW(ret->infoW.Name, packageName);
- if (matched)
- break;
- }
-
- if (!matched)
- return NULL;
-
- if (ret->provider && !ret->provider->loaded)
- {
- ret->provider->lib = LoadLibraryW(ret->provider->moduleName);
- if (ret->provider->lib)
- {
- INIT_SECURITY_INTERFACE_W pInitSecurityInterfaceW =
- (INIT_SECURITY_INTERFACE_W)GetProcAddress(ret->provider->lib,
- SECURITY_ENTRYPOINT_ANSIW);
- INIT_SECURITY_INTERFACE_A pInitSecurityInterfaceA =
- (INIT_SECURITY_INTERFACE_A)GetProcAddress(ret->provider->lib,
- SECURITY_ENTRYPOINT_ANSIA);
- PSecurityFunctionTableA fnTableA = NULL;
- PSecurityFunctionTableW fnTableW = NULL;
-
- if (pInitSecurityInterfaceA)
- fnTableA = pInitSecurityInterfaceA();
- if (pInitSecurityInterfaceW)
- fnTableW = pInitSecurityInterfaceW();
- /* don't update built-in SecurityFunctionTable */
- if (fnTableA != &securityFunctionTableA)
- _makeFnTableA(&ret->provider->fnTableA, fnTableA,
fnTableW);
- if (fnTableW != &securityFunctionTableW)
- _makeFnTableW(&ret->provider->fnTableW, fnTableA,
fnTableW);
- ret->provider->loaded = TRUE;
- }
- else
- ret = NULL;
- }
- }
- return ret;
-}
-
-SecurePackage *SECUR32_findPackageA(PCSTR packageName)
-{
- SecurePackage *ret;
-
- if (packageName)
- {
- UNICODE_STRING package;
-
- RtlCreateUnicodeStringFromAsciiz(&package, packageName);
- ret = SECUR32_findPackageW(package.Buffer);
- RtlFreeUnicodeString(&package);
- }
- else
- ret = NULL;
- return ret;
-}
-
-/***********************************************************************
- * FreeContextBuffer (SECUR32.@)
- *
- * Doh--if pv was allocated by a crypto package, this may not be correct.
- * The sample ssp seems to use LocalAlloc/LocalFee, but there doesn't seem to
- * be any guarantee, nor is there an alloc function in secur32.
- */
-SECURITY_STATUS WINAPI FreeContextBuffer(PVOID pv)
-{
- HeapFree(GetProcessHeap(), 0, pv);
-
- return SEC_E_OK;
-}
/***********************************************************************
* EnumerateSecurityPackagesW (SECUR32.@)
@@ -656,12 +84,7 @@
TRACE("(%p, %p)\n", pcPackages, ppPackageInfo);
-#ifdef __REACTOS__
- if (!packageTable)
- SECUR32_initializeProviders();
-#endif
-
- /* windows just crashes if pcPackages or ppPackageInfo is NULL, so will I */
+ *ppPackageInfo = NULL;
*pcPackages = 0;
EnterCriticalSection(&cs);
if (packageTable)
@@ -725,7 +148,7 @@
/* Converts info (which is assumed to be an array of cPackages SecPkgInfoW
* structures) into an array of SecPkgInfoA structures, which it returns.
*/
-static PSecPkgInfoA thunk_PSecPkgInfoWToA(ULONG cPackages,
+PSecPkgInfoA thunk_PSecPkgInfoWToA(ULONG cPackages,
const SecPkgInfoW *info)
{
PSecPkgInfoA ret;
@@ -815,280 +238,46 @@
return ret;
}
-/***********************************************************************
- * GetComputerObjectNameA (SECUR32.@)
- *
- * Get the local computer's name using the format specified.
- *
- * PARAMS
- * NameFormat [I] The format for the name.
- * lpNameBuffer [O] Pointer to buffer to receive the name.
- * nSize [I/O] Size in characters of buffer.
- *
- * RETURNS
- * TRUE If the name was written to lpNameBuffer.
- * FALSE If the name couldn't be written.
- *
- * NOTES
- * If lpNameBuffer is NULL, then the size of the buffer needed to hold the
- * name will be returned in *nSize.
- *
- * nSize returns the number of characters written when lpNameBuffer is not
- * NULL or the size of the buffer needed to hold the name when the buffer
- * is too short or lpNameBuffer is NULL.
- *
- * It the buffer is too short, ERROR_INSUFFICIENT_BUFFER error will be set.
- */
-BOOLEAN WINAPI GetComputerObjectNameA(
- EXTENDED_NAME_FORMAT NameFormat, LPSTR lpNameBuffer, PULONG nSize)
-{
- BOOLEAN rc;
- LPWSTR bufferW = NULL;
- ULONG sizeW = *nSize;
- TRACE("(%d %p %p)\n", NameFormat, lpNameBuffer, nSize);
- if (lpNameBuffer) {
- bufferW = HeapAlloc(GetProcessHeap(), 0, sizeW * sizeof(WCHAR));
- if (bufferW == NULL) {
- SetLastError(ERROR_NOT_ENOUGH_MEMORY);
- return FALSE;
- }
- }
- rc = GetComputerObjectNameW(NameFormat, bufferW, &sizeW);
- if (rc && bufferW) {
- ULONG len = WideCharToMultiByte(CP_ACP, 0, bufferW, -1, NULL, 0, NULL, NULL);
- WideCharToMultiByte(CP_ACP, 0, bufferW, -1, lpNameBuffer, *nSize, NULL, NULL);
- *nSize = len;
- }
- else
- *nSize = sizeW;
- HeapFree(GetProcessHeap(), 0, bufferW);
- return rc;
-}
-
-/***********************************************************************
- * GetComputerObjectNameW (SECUR32.@)
- */
-BOOLEAN WINAPI GetComputerObjectNameW(
- EXTENDED_NAME_FORMAT NameFormat, LPWSTR lpNameBuffer, PULONG nSize)
-{
- LSA_HANDLE policyHandle;
- LSA_OBJECT_ATTRIBUTES objectAttributes;
- PPOLICY_DNS_DOMAIN_INFO domainInfo;
- NTSTATUS ntStatus;
- BOOLEAN status;
- TRACE("(%d %p %p)\n", NameFormat, lpNameBuffer, nSize);
-
- if (NameFormat == NameUnknown)
- {
- SetLastError(ERROR_INVALID_PARAMETER);
- return FALSE;
- }
-
- ZeroMemory(&objectAttributes, sizeof(objectAttributes));
- objectAttributes.Length = sizeof(objectAttributes);
-
- ntStatus = LsaOpenPolicy(NULL, &objectAttributes,
- POLICY_VIEW_LOCAL_INFORMATION,
- &policyHandle);
- if (ntStatus != STATUS_SUCCESS)
- {
- SetLastError(LsaNtStatusToWinError(ntStatus));
- WARN("LsaOpenPolicy failed with NT status %u\n", GetLastError());
- return FALSE;
- }
-
- ntStatus = LsaQueryInformationPolicy(policyHandle,
- PolicyDnsDomainInformation,
- (PVOID *)&domainInfo);
- if (ntStatus != STATUS_SUCCESS)
- {
- SetLastError(LsaNtStatusToWinError(ntStatus));
- WARN("LsaQueryInformationPolicy failed with NT status %u\n",
- GetLastError());
- LsaClose(policyHandle);
- return FALSE;
- }
-
- if (domainInfo->Sid)
- {
- switch (NameFormat)
- {
- case NameSamCompatible:
- {
- WCHAR name[MAX_COMPUTERNAME_LENGTH + 1];
- DWORD size = sizeof(name)/sizeof(name[0]);
- if (GetComputerNameW(name, &size))
- {
- DWORD len = domainInfo->Name.Length + size + 3;
- if (lpNameBuffer)
- {
- if (*nSize < len)
- {
- *nSize = len;
- SetLastError(ERROR_INSUFFICIENT_BUFFER);
- status = FALSE;
- }
- else
- {
- WCHAR bs[] = { '\\', 0 };
- WCHAR ds[] = { '$', 0 };
- lstrcpyW(lpNameBuffer, domainInfo->Name.Buffer);
- lstrcatW(lpNameBuffer, bs);
- lstrcatW(lpNameBuffer, name);
- lstrcatW(lpNameBuffer, ds);
- status = TRUE;
- }
- }
- else /* just requesting length required */
- {
- *nSize = len;
- status = TRUE;
- }
- }
- else
- {
- SetLastError(ERROR_INTERNAL_ERROR);
- status = FALSE;
- }
- }
- break;
- case NameFullyQualifiedDN:
- case NameDisplay:
- case NameUniqueId:
- case NameCanonical:
- case NameUserPrincipal:
- case NameCanonicalEx:
- case NameServicePrincipal:
- case NameDnsDomain:
- FIXME("NameFormat %d not implemented\n", NameFormat);
- SetLastError(ERROR_CANT_ACCESS_DOMAIN_INFO);
- status = FALSE;
- break;
- default:
- SetLastError(ERROR_INVALID_PARAMETER);
- status = FALSE;
- }
- }
- else
- {
- SetLastError(ERROR_CANT_ACCESS_DOMAIN_INFO);
- status = FALSE;
- }
-
- LsaFreeMemory(domainInfo);
- LsaClose(policyHandle);
-
- return status;
-}
-
-/***********************************************************************
- * GetUserNameExA (SECUR32.@)
- */
-BOOLEAN WINAPI GetUserNameExA(
- EXTENDED_NAME_FORMAT NameFormat, LPSTR lpNameBuffer, PULONG nSize)
-{
- BOOLEAN rc;
- LPWSTR bufferW = NULL;
- ULONG sizeW = *nSize;
- TRACE("(%d %p %p)\n", NameFormat, lpNameBuffer, nSize);
- if (lpNameBuffer) {
- bufferW = HeapAlloc(GetProcessHeap(), 0, sizeW * sizeof(WCHAR));
- if (bufferW == NULL) {
- SetLastError(ERROR_NOT_ENOUGH_MEMORY);
- return FALSE;
- }
- }
- rc = GetUserNameExW(NameFormat, bufferW, &sizeW);
- if (rc) {
- ULONG len = WideCharToMultiByte(CP_ACP, 0, bufferW, -1, NULL, 0, NULL, NULL);
- if (len <= *nSize)
- {
- WideCharToMultiByte(CP_ACP, 0, bufferW, -1, lpNameBuffer, *nSize, NULL,
NULL);
- *nSize = len - 1;
- }
- else
- {
- *nSize = len;
- rc = FALSE;
- SetLastError(ERROR_MORE_DATA);
- }
- }
- else
- *nSize = sizeW;
- HeapFree(GetProcessHeap(), 0, bufferW);
- return rc;
-}
-
-BOOLEAN WINAPI GetUserNameExW(
- EXTENDED_NAME_FORMAT NameFormat, LPWSTR lpNameBuffer, PULONG nSize)
-{
- TRACE("(%d %p %p)\n", NameFormat, lpNameBuffer, nSize);
-
- switch (NameFormat)
- {
- case NameSamCompatible:
- {
- WCHAR samname[UNLEN + 1 + MAX_COMPUTERNAME_LENGTH + 1];
- LPWSTR out;
- DWORD len;
-
- /* This assumes the current user is always a local account */
- len = MAX_COMPUTERNAME_LENGTH + 1;
- if (GetComputerNameW(samname, &len))
- {
- out = samname + lstrlenW(samname);
- *out++ = '\\';
- len = UNLEN + 1;
- if (GetUserNameW(out, &len))
- {
- if (lstrlenW(samname) < *nSize)
- {
- lstrcpyW(lpNameBuffer, samname);
- *nSize = lstrlenW(samname);
- return TRUE;
- }
-
- SetLastError(ERROR_MORE_DATA);
- *nSize = lstrlenW(samname) + 1;
- }
- }
- return FALSE;
- }
-
- case NameUnknown:
- case NameFullyQualifiedDN:
- case NameDisplay:
- case NameUniqueId:
- case NameCanonical:
- case NameUserPrincipal:
- case NameCanonicalEx:
- case NameServicePrincipal:
- case NameDnsDomain:
- SetLastError(ERROR_NONE_MAPPED);
- return FALSE;
-
- default:
- SetLastError(ERROR_INVALID_PARAMETER);
- return FALSE;
- }
-}
-
-BOOLEAN WINAPI TranslateNameA(
- LPCSTR lpAccountName, EXTENDED_NAME_FORMAT AccountNameFormat,
- EXTENDED_NAME_FORMAT DesiredNameFormat, LPSTR lpTranslatedName,
- PULONG nSize)
-{
- FIXME("%p %d %d %p %p\n", lpAccountName, AccountNameFormat,
- DesiredNameFormat, lpTranslatedName, nSize);
- return FALSE;
-}
-
-BOOLEAN WINAPI TranslateNameW(
- LPCWSTR lpAccountName, EXTENDED_NAME_FORMAT AccountNameFormat,
- EXTENDED_NAME_FORMAT DesiredNameFormat, LPWSTR lpTranslatedName,
- PULONG nSize)
-{
- FIXME("%p %d %d %p %p\n", lpAccountName, AccountNameFormat,
- DesiredNameFormat, lpTranslatedName, nSize);
- return FALSE;
-}
+SECURITY_STATUS
+WINAPI
+ApplyControlTokenW(PCtxtHandle Handle,
+ PSecBufferDesc Buffer)
+{
+ UNIMPLEMENTED;
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+SECURITY_STATUS
+WINAPI
+ApplyControlTokenA(PCtxtHandle Handle,
+ PSecBufferDesc Buffer)
+{
+ UNIMPLEMENTED;
+ return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+SECURITY_STATUS
+WINAPI
+FreeContextBuffer (
+ PVOID pvoid
+ )
+{
+ HeapFree(GetProcessHeap(), 0, pvoid);
+ return SEC_E_OK;
+}
+
+PSecurityFunctionTableW
+WINAPI
+InitSecurityInterfaceW(VOID)
+{
+ return &securityFunctionTableW;
+}
+
+
+PSecurityFunctionTableA
+WINAPI
+InitSecurityInterfaceA(VOID)
+{
+ return &securityFunctionTableA;
+}
+
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/stubs.c
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/stubs.c [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/stubs.c [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -1,11 +1,10 @@
-#include "precomp.h"
+
+#include <precomp.h>
+
+#include <precomp.h>
#define NDEBUG
#include <reactos/debug.h>
-
-#define SEC_ENTRY WINAPI
-
-typedef PVOID PSECURITY_PACKAGE_OPTIONS, PSecurityUserData;
SECURITY_STATUS
SEC_ENTRY
@@ -49,3 +48,27 @@
UNIMPLEMENTED;
return STATUS_UNSUCCESSFUL;
}
+
+SECURITY_STATUS
+SEC_ENTRY
+UnsealMessage(
+ LSA_SEC_HANDLE ContextHandle,
+ PSecBufferDesc MessageBuffers,
+ ULONG MessageSequenceNumber,
+ PULONG QualityOfProtection)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
+
+SECURITY_STATUS
+SEC_ENTRY
+SealMessage(
+ LSA_SEC_HANDLE ContextHandle,
+ ULONG QualityOfProtection,
+ PSecBufferDesc MessageBuffers,
+ ULONG MessageSequenceNumber)
+{
+ UNIMPLEMENTED;
+ return STATUS_UNSUCCESSFUL;
+}
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/thunks.c
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/thunks.c [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/thunks.c [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -17,7 +17,7 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+#include <precomp.h>
#include "wine/debug.h"
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/thunks.c
------------------------------------------------------------------------------
--- charset (original)
+++ charset (removed)
@@ -1 +0,0 @@
-UTF-8
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/thunks.c
------------------------------------------------------------------------------
--- svn:mime-type (original)
+++ svn:mime-type (removed)
@@ -1 +0,0 @@
-text/plain
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/thunks.h
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/thunks.h [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/thunks.h [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -27,48 +27,48 @@
SECURITY_STATUS SEC_ENTRY thunk_AcquireCredentialsHandleA(
SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialsUse,
PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn,
- PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
DECLSPEC_HIDDEN;
+ PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry);
SECURITY_STATUS SEC_ENTRY thunk_AcquireCredentialsHandleW(
SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse,
PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn,
- PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry)
DECLSPEC_HIDDEN;
+ PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry);
SECURITY_STATUS SEC_ENTRY thunk_InitializeSecurityContextA(
PCredHandle phCredential, PCtxtHandle phContext,
SEC_CHAR *pszTargetName, ULONG fContextReq,
ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput,
ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput,
- ULONG *pfContextAttr, PTimeStamp ptsExpiry) DECLSPEC_HIDDEN;
+ ULONG *pfContextAttr, PTimeStamp ptsExpiry);
SECURITY_STATUS SEC_ENTRY thunk_InitializeSecurityContextW(
PCredHandle phCredential, PCtxtHandle phContext,
SEC_WCHAR *pszTargetName, ULONG fContextReq,
ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput,
ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput,
- ULONG *pfContextAttr, PTimeStamp ptsExpiry) DECLSPEC_HIDDEN;
+ ULONG *pfContextAttr, PTimeStamp ptsExpiry);
SECURITY_STATUS SEC_ENTRY thunk_ImportSecurityContextA(
SEC_CHAR *pszPackage, PSecBuffer pPackedContext, void *Token,
- PCtxtHandle phContext) DECLSPEC_HIDDEN;
+ PCtxtHandle phContext);
SECURITY_STATUS SEC_ENTRY thunk_ImportSecurityContextW(
SEC_WCHAR *pszPackage, PSecBuffer pPackedContext, void *Token,
- PCtxtHandle phContext) DECLSPEC_HIDDEN;
+ PCtxtHandle phContext);
SECURITY_STATUS SEC_ENTRY thunk_AddCredentialsA(PCredHandle hCredentials,
SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse,
void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument,
- PTimeStamp ptsExpiry) DECLSPEC_HIDDEN;
+ PTimeStamp ptsExpiry);
SECURITY_STATUS SEC_ENTRY thunk_AddCredentialsW(PCredHandle hCredentials,
SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse,
void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument,
- PTimeStamp ptsExpiry) DECLSPEC_HIDDEN;
+ PTimeStamp ptsExpiry);
SECURITY_STATUS SEC_ENTRY thunk_QueryCredentialsAttributesA(
- PCredHandle phCredential, ULONG ulAttribute, void *pBuffer) DECLSPEC_HIDDEN;
+ PCredHandle phCredential, ULONG ulAttribute, void *pBuffer);
SECURITY_STATUS SEC_ENTRY thunk_QueryCredentialsAttributesW(
- PCredHandle phCredential, ULONG ulAttribute, void *pBuffer) DECLSPEC_HIDDEN;
+ PCredHandle phCredential, ULONG ulAttribute, void *pBuffer);
SECURITY_STATUS SEC_ENTRY thunk_QueryContextAttributesA(
- PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer) DECLSPEC_HIDDEN;
+ PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer);
SECURITY_STATUS SEC_ENTRY thunk_QueryContextAttributesW(
- PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer) DECLSPEC_HIDDEN;
+ PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer);
SECURITY_STATUS SEC_ENTRY thunk_SetContextAttributesA(PCtxtHandle phContext,
- ULONG ulAttribute, void *pBuffer, ULONG cbBuffer) DECLSPEC_HIDDEN;
+ ULONG ulAttribute, void *pBuffer, ULONG cbBuffer);
SECURITY_STATUS SEC_ENTRY thunk_SetContextAttributesW(PCtxtHandle phContext,
- ULONG ulAttribute, void *pBuffer, ULONG cbBuffer) DECLSPEC_HIDDEN;
+ ULONG ulAttribute, void *pBuffer, ULONG cbBuffer);
#endif /* ndef __SECUR32_THUNKS_H__ */
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/thunks.h
------------------------------------------------------------------------------
--- charset (original)
+++ charset (removed)
@@ -1 +0,0 @@
-UTF-8
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/thunks.h
------------------------------------------------------------------------------
--- svn:mime-type (original)
+++ svn:mime-type (removed)
@@ -1 +0,0 @@
-text/plain
Modified: branches/sspi-bringup/reactos/dll/win32/secur32/wrapper.c
URL:
http://svn.reactos.org/svn/reactos/branches/sspi-bringup/reactos/dll/win32/…
==============================================================================
--- branches/sspi-bringup/reactos/dll/win32/secur32/wrapper.c [iso-8859-1] (original)
+++ branches/sspi-bringup/reactos/dll/win32/secur32/wrapper.c [iso-8859-1] Wed Feb 8
02:37:58 2017
@@ -16,7 +16,8 @@
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
-#include "precomp.h"
+
+#include <precomp.h>
#include "wine/debug.h"
@@ -32,7 +33,7 @@
{
SECURITY_STATUS ret;
- TRACE("%p %p %p\n", phSec, package, realHandle);
+ TRACE("makeSecHandle %p %p %p\n", phSec, package, realHandle);
if (phSec && package && realHandle)
{
@@ -151,9 +152,9 @@
SECURITY_STATUS WINAPI FreeCredentialsHandle(
PCredHandle phCredential)
{
- SECURITY_STATUS ret;
-
- TRACE("%p\n", phCredential);
+ SECURITY_STATUS ret = SEC_E_INVALID_HANDLE;
+
+ TRACE("FreeCredentialsHandle %p\n", phCredential);
if (phCredential)
{
SecurePackage *package = (SecurePackage *)phCredential->dwUpper;
@@ -162,12 +163,9 @@
if (package && package->provider &&
package->provider->fnTableW.FreeCredentialsHandle)
ret = package->provider->fnTableW.FreeCredentialsHandle(cred);
- else
- ret = SEC_E_INVALID_HANDLE;
HeapFree(GetProcessHeap(), 0, cred);
}
- else
- ret = SEC_E_INVALID_HANDLE;
+
return ret;
}
@@ -788,6 +786,7 @@
{
(*ppPackageInfo)->Comment = nextString;
lstrcpynW(nextString, package->infoW.Comment, commentLen);
+ nextString += commentLen;
}
else
(*ppPackageInfo)->Comment = NULL;
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/wrapper.c
------------------------------------------------------------------------------
--- charset (original)
+++ charset (removed)
@@ -1 +0,0 @@
-UTF-8
Propchange: branches/sspi-bringup/reactos/dll/win32/secur32/wrapper.c
------------------------------------------------------------------------------
--- svn:mime-type (original)
+++ svn:mime-type (removed)
@@ -1 +0,0 @@
-text/plain