From 0c38f92082f99e1bf6be18ed2dc9892a2019130c Mon Sep 17 00:00:00 2001 From: Fritz Elfert Date: Thu, 4 Jan 2018 01:12:34 +0100 Subject: [PATCH] Use FSP_NP_ORDER_FIRST to specify provider order --- src/dll/np.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/dll/np.c b/src/dll/np.c index bc6d1a03..c8e3b3dd 100644 --- a/src/dll/np.c +++ b/src/dll/np.c @@ -35,6 +35,12 @@ */ #define FSP_NP_CREDENTIAL_MANAGER +/* + * Define the following macro to register ourselves as the first network provider. + * Otherwise we will be registered as the last network provider. + */ +#define FSP_NP_ORDER_FIRST + enum { FSP_NP_CREDENTIALS_NONE = 0, @@ -1082,7 +1088,11 @@ NTSTATUS FspNpRegister(VOID) return FspNtStatusFromWin32(RegResult); RegBufferSize = sizeof RegBuffer - sizeof L"," FSP_NP_NAME; - RegBufferOffset = lstrlenW(L"," FSP_NP_NAME); +#ifdef FSP_NP_ORDER_FIRST + RegBufferOffset = sizeof "" FSP_NP_NAME; +#else + RegBufferOffset = 0; +#endif RegResult = RegQueryValueExW(RegKey, L"ProviderOrder", 0, &RegType, (PVOID)&RegBuffer[RegBufferOffset], &RegBufferSize); if (ERROR_SUCCESS != RegResult) @@ -1108,7 +1118,11 @@ NTSTATUS FspNpRegister(VOID) if (!FoundProvider) { +#ifdef FSP_NP_ORDER_FIRST memcpy((PWSTR)RegBuffer, L"" FSP_NP_NAME ",", sizeof L"" FSP_NP_NAME); +#else + memcpy(--P, L"," FSP_NP_NAME, sizeof L"," FSP_NP_NAME); +#endif RegBufferSize = lstrlenW(RegBuffer); RegBufferSize++;