- diff --git a/build.vc19/nfs41_driver/nfs41_driver.vcxproj b/build.vc19/nfs41_driver/nfs41_driver.vcxproj
- index 2165fc2..2bbc7ef 100644
- --- a/build.vc19/nfs41_driver/nfs41_driver.vcxproj
- +++ b/build.vc19/nfs41_driver/nfs41_driver.vcxproj
- @@ -142,7 +142,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
- @@ -154,7 +154,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- @@ -166,7 +166,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- @@ -178,7 +178,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
- @@ -190,7 +190,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
- @@ -202,7 +202,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- @@ -214,7 +214,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- @@ -226,7 +226,7 @@
- <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
- </ClCompile>
- <Link>
- - <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\bufferoverflowk.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- + <AdditionalDependencies>$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ntoskrnl.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\hal.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\BufferOverflowfastfailK.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\ksecdd.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rxce.lib;$(WindowsSdkDir)lib0.0.19041.0\km\$(DDKPlatform)\rdbsslib.lib;$(WindowsSdkDir)lib\win7\km\$(DDKPlatform)\copysup.lib</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- diff --git a/cygwin/devel/msnfs41client.bash b/cygwin/devel/msnfs41client.bash
- index 2b66485..9c211ac 100644
- --- a/cygwin/devel/msnfs41client.bash
- +++ b/cygwin/devel/msnfs41client.bash
- @@ -98,19 +98,8 @@ function nfsclient_install
- chmod a+x *.dll
- chmod a+x ../../sbin/nfs*.exe ../../sbin/libtirpc*.dll
- - if false ; then
- - # install.bat needs PATH to include $PWD
- - PATH="$PWD:$PATH" cmd /c install.bat
- - else
- - # devel: set default in case "nfs_install" ruined it:
- - #regtool -s set '/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder' 'RDPNP,LanmanWorkstation,webclient'
- -
- - printf 'before nfs_install: ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
- - nfs_install -D
- - printf 'after nfs_install: ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
- -
- - rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 ./nfs41rdr.inf
- - fi
- + # (re-)install driver
- + nfsclient_adddriver
- mkdir -p /cygdrive/c/etc
- cp etc_netconfig /cygdrive/c/etc/netconfig
- @@ -206,6 +195,52 @@ function nfsclient_install
- return 0
- }
- +function nfsclient_adddriver
- +{
- + set -o nounset
- + set -o xtrace
- + set -o errexit
- +
- + # switch to the location where this script is installed,
- + # because on Cygwin the script will be installed
- + # in /cygdrive/c/cygwin/lib/msnfs41client/ (32bit) or
- + # in /cygdrive/c/cygwin64/lib/msnfs41client/ (64bit).
- + cd -P "$(dirname -- "$(realpath "${BASH_SOURCE[0]}")")"
- +
- + # devel: set default in case "nfs_install" ruined it:
- + #regtool -s set '/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder' 'RDPNP,LanmanWorkstation,webclient'
- +
- + printf 'before nfs_install: ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
- + nfs_install -D
- + printf 'after nfs_install: ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
- +
- + rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 ./nfs41rdr.inf
- +
- + return 0
- +}
- +
- +function nfsclient_removedriver
- +{
- + set -o nounset
- + set -o xtrace
- + set -o errexit
- +
- + # switch to the location where this script is installed,
- + # because on Cygwin the script will be installed
- + # in /cygdrive/c/cygwin/lib/msnfs41client/ (32bit) or
- + # in /cygdrive/c/cygwin64/lib/msnfs41client/ (64bit).
- + cd -P "$(dirname -- "$(realpath "${BASH_SOURCE[0]}")")"
- +
- + nfs_install.exe 0
- + rundll32.exe setupapi.dll,InstallHinfSection DefaultUninstall 132 ./nfs41rdr.inf
- + rm /cygdrive/c/Windows/System32/nfs41_np.dll || true
- + rm /cygdrive/c/Windows/System32/drivers/nfs41_driver.sys || true
- +
- + sync
- +
- + return 0
- +}
- +
- function nfsclient_rundeamon
- {
- set -o nounset
- @@ -591,6 +626,23 @@ function main
- nfsclient_install
- return $?
- ;;
- + #
- + # 'removedriver' should only be used by developers,
- + # as 'install' can always overwrite an existing driver
- + #
- + 'removedriver')
- + check_machine_arch || (( numerr++ ))
- + require_cmd 'nfs_install.exe' || (( numerr++ ))
- + require_cmd 'rundll32.exe' || (( numerr++ ))
- + if ! is_windows_admin_account ; then
- + printf $"%s: %q requires Windows Adminstator permissions.\n" "$0" "$cmd"
- + (( numerr++ ))
- + fi
- + (( numerr > 0 )) && return 1
- +
- + nfsclient_removedriver
- + return $?
- + ;;
- 'run_deamon' | 'run_daemon')
- check_machine_arch || (( numerr++ ))
- #require_cmd 'cdb.exe' || (( numerr++ ))
- diff --git a/daemon/accesstoken.c b/daemon/accesstoken.c
- index a164b4e..8f98b5d 100644
- --- a/daemon/accesstoken.c
- +++ b/daemon/accesstoken.c
- @@ -19,10 +19,16 @@
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- */
- +#include "nfs41_build_features.h"
- #include "accesstoken.h"
- +#include "sid.h"
- #include "daemon_debug.h"
- #include <Lmcons.h>
- +#ifndef _NFS41_DRIVER_BUILDFEATURES_
- +#error NFS41 build config not included
- +#endif
- +
- /*
- * Performance hack:
- * GETTOKINFO_EXTRA_BUFFER - extra space for more data
- diff --git a/dll/nfs41_np.c b/dll/nfs41_np.c
- index 9a4d7cd..abe7aee 100644
- --- a/dll/nfs41_np.c
- +++ b/dll/nfs41_np.c
- @@ -73,6 +73,54 @@ ULONG _cdecl NFS41DbgPrint(__in LPTSTR fmt, ...)
- return rc;
- }
- +/*
- + * |equal_luid()| - |LUID| might contain padding fields, so
- + * we cannot use |memcpy()|!
- + */
- +static
- +bool equal_luid(LUID *l1, LUID *l2)
- +{
- + return((l1->LowPart == l2->LowPart) &&
- + (l1->HighPart == l2->HighPart));
- +}
- +
- +/*
- + * Performance hack:
- + * GETTOKINFO_EXTRA_BUFFER - extra space for more data
- + * |GetTokenInformation()| for |TOKEN_USER| and |TOKEN_PRIMARY_GROUP|
- + * always fails in Win10 with |ERROR_INSUFFICIENT_BUFFER| if you
- + * just pass the |sizeof(TOKEN_*)| value. Instead of calling
- + * |GetTokenInformation()| with |NULL| arg to obtain the size to
- + * allocate we just provide 2048 bytes of extra space after the
- + * |TOKEN_*| size, and pray it is enough
- + */
- +#define GETTOKINFO_EXTRA_BUFFER (2048)
- +
- +static
- +bool get_token_authenticationid(HANDLE tok, LUID *out_authenticationid)
- +{
- + DWORD tokdatalen;
- + PTOKEN_GROUPS_AND_PRIVILEGES ptgp;
- +
- + tokdatalen =
- + sizeof(TOKEN_GROUPS_AND_PRIVILEGES)+GETTOKINFO_EXTRA_BUFFER;
- + ptgp = _alloca(tokdatalen);
- + if (!GetTokenInformation(tok, TokenGroupsAndPrivileges, ptgp,
- + tokdatalen, &tokdatalen)) {
- + DbgP((L"get_token_authenticationid: "
- + L"GetTokenInformation(tok=0x%p, TokenGroupsAndPrivileges) "
- + L"failed, "
- + L"status=%d\n",
- + (void *)tok, (int)GetLastError()));
- + return false;
- + }
- +
- + *out_authenticationid = ptgp->AuthenticationId;
- +
- + return true;
- +}
- +
- +
- int filter(unsigned int code)
- {
- DbgP((L"####Got exception %u\n", code));
- @@ -203,9 +251,13 @@ static DWORD StoreConnectionInfo(
- PNFS41NP_NETRESOURCE pNfs41NetResource;
- INT i;
- bool FreeEntryFound = false;
- + LUID authenticationid;
- DbgP((L"--> StoreConnectionInfo\n"));
- + (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
- + &authenticationid);
- +
- status = OpenSharedMemory(&hMutex, &hMemory,
- &(PVOID)pSharedMemory);
- if (status)
- @@ -243,6 +295,7 @@ static DWORD StoreConnectionInfo(
- pNfs41NetResource->dwDisplayType =
- lpNetResource->dwDisplayType;
- pNfs41NetResource->dwUsage = RESOURCEUSAGE_CONNECTABLE;
- + pNfs41NetResource->MountAuthId = authenticationid;
- pNfs41NetResource->LocalNameLength =
- (USHORT)(wcslen(LocalName) + 1) * sizeof(WCHAR);
- pNfs41NetResource->RemoteNameLength =
- @@ -660,10 +713,14 @@ NPCancelConnection(
- HANDLE hMutex, hMemory;
- PNFS41NP_SHARED_MEMORY pSharedMemory;
- + LUID authenticationid;
- DbgP((L"--> NPCancelConnection(lpName='%s', fForce=%d)\n",
- lpName, (int)fForce));
- + (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
- + &authenticationid);
- +
- Status = OpenSharedMemory(&hMutex,
- &hMemory,
- (PVOID)&pSharedMemory);
- @@ -684,7 +741,9 @@ NPCancelConnection(
- pNetResource = &pSharedMemory->NetResources[Index];
- if (pNetResource->InUse) {
- - if ((((wcslen(lpName)+1) * sizeof(WCHAR)) ==
- + if (equal_luid(&authenticationid,
- + &pNetResource->MountAuthId) &&
- + (((wcslen(lpName)+1) * sizeof(WCHAR)) ==
- pNetResource->LocalNameLength) &&
- (!wcscmp(lpName, pNetResource->LocalName))) {
- ULONG CopyBytes;
- @@ -749,9 +808,13 @@ NPGetConnection(
- HANDLE hMutex, hMemory;
- PNFS41NP_SHARED_MEMORY pSharedMemory;
- + LUID authenticationid;
- DbgP((L"--> NPGetConnection(lpLocalName='%s')\n", lpLocalName));
- + (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
- + &authenticationid);
- +
- Status = OpenSharedMemory(&hMutex,
- &hMemory,
- (PVOID)&pSharedMemory);
- @@ -767,7 +830,9 @@ NPGetConnection(
- pNetResource = &pSharedMemory->NetResources[Index];
- if (pNetResource->InUse) {
- - if ((((wcslen(lpLocalName)+1)*sizeof(WCHAR)) ==
- + if (equal_luid(&authenticationid,
- + &pNetResource->MountAuthId) &&
- + (((wcslen(lpLocalName)+1)*sizeof(WCHAR)) ==
- pNetResource->LocalNameLength) &&
- (!wcscmp(lpLocalName, pNetResource->LocalName))) {
- if (*lpBufferSize < pNetResource->RemoteNameLength) {
- @@ -854,10 +919,14 @@ NPEnumResource(
- PNFS41NP_SHARED_MEMORY pSharedMemory;
- PNFS41NP_NETRESOURCE pNfsNetResource;
- INT Index = *(PULONG)hEnum;
- + LUID authenticationid;
- DbgP((L"--> NPEnumResource(hEnum=0x%x, *lpcCount=%d)\n",
- HANDLE2INT(hEnum), (int)*lpcCount));
- + (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
- + &authenticationid);
- +
- pNetResource = (LPNETRESOURCE) lpBuffer;
- SpaceAvailable = *lpBufferSize;
- EntriesCopied = 0;
- @@ -875,7 +944,9 @@ NPEnumResource(
- {
- pNfsNetResource = &pSharedMemory->NetResources[Index];
- - if (pNfsNetResource->InUse)
- + if (pNfsNetResource->InUse &&
- + equal_luid(&authenticationid,
- + &pNfsNetResource->MountAuthId))
- {
- SpaceNeeded = sizeof(NETRESOURCE);
- SpaceNeeded += pNfsNetResource->LocalNameLength;
- diff --git a/dll/nfs41_np.h b/dll/nfs41_np.h
- index 5f3d77c..bf440bd 100644
- --- a/dll/nfs41_np.h
- +++ b/dll/nfs41_np.h
- @@ -3,6 +3,7 @@
- *
- * Olga Kornievskaia <aglo@umich.edu>
- * Casey Bodley <cbodley@umich.edu>
- + * Roland Mainz <roland.mainz@nrubsig.org>
- *
- * 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
- @@ -35,6 +36,7 @@ typedef struct __NFS41NP_NETRESOURCE {
- DWORD dwType;
- DWORD dwDisplayType;
- DWORD dwUsage;
- + LUID MountAuthId;
- WCHAR LocalName[NFS41_SYS_MAX_PATH_LEN];
- WCHAR RemoteName[NFS41_SYS_MAX_PATH_LEN];
- WCHAR ConnectionName[NFS41_SYS_MAX_PATH_LEN];
- diff --git a/nfs41rdr.inf b/nfs41rdr.inf
- index 02ee912..4274370 100644
- --- a/nfs41rdr.inf
- +++ b/nfs41rdr.inf
- @@ -1,10 +1,8 @@
- [Version]
- Signature="$CHICAGO$"
- -DriverVer=05/27/2009,1.0
- -ClassGUID={00000000-0000-0000-0000-000000000000}
- -;Its possible that we should be using:
- -;Class=NetService
- -;ClassGUID={4d36e974-e325-11ce-bfc1-08002be10318}
- +DriverVer=06/12/2024,1.0.0.0
- +Class=NetService
- +ClassGUID={4d36e974-e325-11ce-bfc1-08002be10318}
- CatalogFile=catalogfile.cat
- Provider=%ProviderName%
- diff --git a/sys/nfs41_driver.c b/sys/nfs41_driver.c
- index 58a312c..dd24405 100644
- --- a/sys/nfs41_driver.c
- +++ b/sys/nfs41_driver.c
- @@ -162,6 +162,7 @@ typedef struct _updowncall_entry {
- FAST_MUTEX lock;
- LIST_ENTRY next;
- KEVENT cond;
- +#undef errno
- DWORD errno;
- BOOLEAN async_op;
- SECURITY_CLIENT_CONTEXT sec_ctx;
backup 2024-06-12
Posted by Anonymous on Wed 12th Jun 2024 16:36
raw | new post
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.