pastebin - collaborative debugging tool
nrubsig.kpaste.net RSS


backup 2024-06-12
Posted by Anonymous on Wed 12th Jun 2024 16:36
raw | new post

  1. diff --git a/build.vc19/nfs41_driver/nfs41_driver.vcxproj b/build.vc19/nfs41_driver/nfs41_driver.vcxproj
  2. index 2165fc2..2bbc7ef 100644
  3. --- a/build.vc19/nfs41_driver/nfs41_driver.vcxproj
  4. +++ b/build.vc19/nfs41_driver/nfs41_driver.vcxproj
  5. @@ -142,7 +142,7 @@
  6.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  7.      </ClCompile>
  8.      <Link>
  9. -      <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>
  10. +      <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>
  11.      </Link>
  12.    </ItemDefinitionGroup>
  13.    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM64'">
  14. @@ -154,7 +154,7 @@
  15.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  16.      </ClCompile>
  17.      <Link>
  18. -      <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>
  19. +      <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>
  20.      </Link>
  21.    </ItemDefinitionGroup>
  22.    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
  23. @@ -166,7 +166,7 @@
  24.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  25.      </ClCompile>
  26.      <Link>
  27. -      <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>
  28. +      <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>
  29.      </Link>
  30.    </ItemDefinitionGroup>
  31.    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
  32. @@ -178,7 +178,7 @@
  33.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  34.      </ClCompile>
  35.      <Link>
  36. -      <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>
  37. +      <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>
  38.      </Link>
  39.    </ItemDefinitionGroup>
  40.    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">
  41. @@ -190,7 +190,7 @@
  42.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  43.      </ClCompile>
  44.      <Link>
  45. -      <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>
  46. +      <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>
  47.      </Link>
  48.    </ItemDefinitionGroup>
  49.    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
  50. @@ -202,7 +202,7 @@
  51.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  52.      </ClCompile>
  53.      <Link>
  54. -      <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>
  55. +      <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>
  56.      </Link>
  57.    </ItemDefinitionGroup>
  58.    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  59. @@ -214,7 +214,7 @@
  60.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  61.      </ClCompile>
  62.      <Link>
  63. -      <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>
  64. +      <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>
  65.      </Link>
  66.    </ItemDefinitionGroup>
  67.    <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  68. @@ -226,7 +226,7 @@
  69.        <AdditionalOptions>/std:c17 /Zc:preprocessor- /kernel /wd4100 /wd4201 /wd5104</AdditionalOptions>
  70.      </ClCompile>
  71.      <Link>
  72. -      <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>
  73. +      <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>
  74.      </Link>
  75.    </ItemDefinitionGroup>
  76.    <ItemGroup>
  77. diff --git a/cygwin/devel/msnfs41client.bash b/cygwin/devel/msnfs41client.bash
  78. index 2b66485..9c211ac 100644
  79. --- a/cygwin/devel/msnfs41client.bash
  80. +++ b/cygwin/devel/msnfs41client.bash
  81. @@ -98,19 +98,8 @@ function nfsclient_install
  82.         chmod a+x *.dll
  83.         chmod a+x ../../sbin/nfs*.exe ../../sbin/libtirpc*.dll
  84.  
  85. -       if false ; then
  86. -               # install.bat needs PATH to include $PWD
  87. -               PATH="$PWD:$PATH" cmd /c install.bat
  88. -       else
  89. -               # devel: set default in case "nfs_install" ruined it:
  90. -               #regtool -s set '/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder' 'RDPNP,LanmanWorkstation,webclient'
  91. -
  92. -               printf 'before nfs_install: ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
  93. -               nfs_install -D
  94. -               printf 'after nfs_install:  ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
  95. -
  96. -               rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 ./nfs41rdr.inf
  97. -       fi
  98. +       # (re-)install driver
  99. +       nfsclient_adddriver
  100.  
  101.         mkdir -p /cygdrive/c/etc
  102.         cp etc_netconfig /cygdrive/c/etc/netconfig
  103. @@ -206,6 +195,52 @@ function nfsclient_install
  104.         return 0
  105.  }
  106.  
  107. +function nfsclient_adddriver
  108. +{
  109. +       set -o nounset
  110. +       set -o xtrace
  111. +       set -o errexit
  112. +
  113. +       # switch to the location where this script is installed,
  114. +       # because on Cygwin the script will be installed
  115. +       # in /cygdrive/c/cygwin/lib/msnfs41client/ (32bit) or
  116. +       # in /cygdrive/c/cygwin64/lib/msnfs41client/ (64bit).
  117. +       cd -P "$(dirname -- "$(realpath "${BASH_SOURCE[0]}")")"
  118. +
  119. +       # devel: set default in case "nfs_install" ruined it:
  120. +       #regtool -s set '/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder' 'RDPNP,LanmanWorkstation,webclient'
  121. +
  122. +       printf 'before nfs_install: ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
  123. +       nfs_install -D
  124. +       printf 'after nfs_install:  ProviderOrder="%s"\n' "$( strings -a '/proc/registry/HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/NetworkProvider/Order/ProviderOrder')"
  125. +
  126. +       rundll32 setupapi.dll,InstallHinfSection DefaultInstall 132 ./nfs41rdr.inf
  127. +      
  128. +       return 0
  129. +}
  130. +
  131. +function nfsclient_removedriver
  132. +{
  133. +       set -o nounset
  134. +       set -o xtrace
  135. +       set -o errexit
  136. +
  137. +       # switch to the location where this script is installed,
  138. +       # because on Cygwin the script will be installed
  139. +       # in /cygdrive/c/cygwin/lib/msnfs41client/ (32bit) or
  140. +       # in /cygdrive/c/cygwin64/lib/msnfs41client/ (64bit).
  141. +       cd -P "$(dirname -- "$(realpath "${BASH_SOURCE[0]}")")"
  142. +
  143. +       nfs_install.exe 0
  144. +       rundll32.exe setupapi.dll,InstallHinfSection DefaultUninstall 132 ./nfs41rdr.inf
  145. +       rm /cygdrive/c/Windows/System32/nfs41_np.dll || true
  146. +       rm /cygdrive/c/Windows/System32/drivers/nfs41_driver.sys || true
  147. +
  148. +       sync
  149. +
  150. +       return 0
  151. +}
  152. +
  153.  function nfsclient_rundeamon
  154.  {
  155.         set -o nounset
  156. @@ -591,6 +626,23 @@ function main
  157.                         nfsclient_install
  158.                         return $?
  159.                         ;;
  160. +               #
  161. +               # 'removedriver' should only be used by developers,
  162. +               # as 'install' can always overwrite an existing driver
  163. +               #
  164. +               'removedriver')
  165. +                       check_machine_arch || (( numerr++ ))
  166. +                       require_cmd 'nfs_install.exe' || (( numerr++ ))
  167. +                       require_cmd 'rundll32.exe' || (( numerr++ ))
  168. +                       if ! is_windows_admin_account ; then
  169. +                               printf $"%s: %q requires Windows Adminstator permissions.\n" "$0" "$cmd"
  170. +                               (( numerr++ ))
  171. +                       fi
  172. +                       (( numerr > 0 )) && return 1
  173. +
  174. +                       nfsclient_removedriver
  175. +                       return $?
  176. +                       ;;
  177.                 'run_deamon' | 'run_daemon')
  178.                         check_machine_arch || (( numerr++ ))
  179.                         #require_cmd 'cdb.exe' || (( numerr++ ))
  180. diff --git a/daemon/accesstoken.c b/daemon/accesstoken.c
  181. index a164b4e..8f98b5d 100644
  182. --- a/daemon/accesstoken.c
  183. +++ b/daemon/accesstoken.c
  184. @@ -19,10 +19,16 @@
  185.   * Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  186.   */
  187.  
  188. +#include "nfs41_build_features.h"
  189.  #include "accesstoken.h"
  190. +#include "sid.h"
  191.  #include "daemon_debug.h"
  192.  #include <Lmcons.h>
  193.  
  194. +#ifndef _NFS41_DRIVER_BUILDFEATURES_
  195. +#error NFS41 build config not included
  196. +#endif
  197. +
  198.  /*
  199.   * Performance hack:
  200.   * GETTOKINFO_EXTRA_BUFFER - extra space for more data
  201. diff --git a/dll/nfs41_np.c b/dll/nfs41_np.c
  202. index 9a4d7cd..abe7aee 100644
  203. --- a/dll/nfs41_np.c
  204. +++ b/dll/nfs41_np.c
  205. @@ -73,6 +73,54 @@ ULONG _cdecl NFS41DbgPrint(__in LPTSTR fmt, ...)
  206.      return rc;
  207.  }
  208.  
  209. +/*
  210. + * |equal_luid()| - |LUID| might contain padding fields, so
  211. + * we cannot use |memcpy()|!
  212. + */
  213. +static
  214. +bool equal_luid(LUID *l1, LUID *l2)
  215. +{
  216. +    return((l1->LowPart == l2->LowPart) &&
  217. +        (l1->HighPart == l2->HighPart));
  218. +}
  219. +
  220. +/*
  221. + * Performance hack:
  222. + * GETTOKINFO_EXTRA_BUFFER - extra space for more data
  223. + * |GetTokenInformation()| for |TOKEN_USER| and |TOKEN_PRIMARY_GROUP|
  224. + * always fails in Win10 with |ERROR_INSUFFICIENT_BUFFER| if you
  225. + * just pass the |sizeof(TOKEN_*)| value. Instead of calling
  226. + * |GetTokenInformation()| with |NULL| arg to obtain the size to
  227. + * allocate we just provide 2048 bytes of extra space after the
  228. + * |TOKEN_*| size, and pray it is enough
  229. + */
  230. +#define GETTOKINFO_EXTRA_BUFFER (2048)
  231. +
  232. +static
  233. +bool get_token_authenticationid(HANDLE tok, LUID *out_authenticationid)
  234. +{
  235. +    DWORD tokdatalen;
  236. +    PTOKEN_GROUPS_AND_PRIVILEGES ptgp;
  237. +
  238. +    tokdatalen =
  239. +        sizeof(TOKEN_GROUPS_AND_PRIVILEGES)+GETTOKINFO_EXTRA_BUFFER;
  240. +    ptgp = _alloca(tokdatalen);
  241. +    if (!GetTokenInformation(tok, TokenGroupsAndPrivileges, ptgp,
  242. +        tokdatalen, &tokdatalen)) {
  243. +        DbgP((L"get_token_authenticationid: "
  244. +            L"GetTokenInformation(tok=0x%p, TokenGroupsAndPrivileges) "
  245. +            L"failed, "
  246. +            L"status=%d\n",
  247. +            (void *)tok, (int)GetLastError()));
  248. +        return false;
  249. +    }
  250. +
  251. +    *out_authenticationid = ptgp->AuthenticationId;
  252. +
  253. +    return true;
  254. +}
  255. +
  256. +
  257.  int filter(unsigned int code)
  258.  {
  259.      DbgP((L"####Got exception %u\n", code));
  260. @@ -203,9 +251,13 @@ static DWORD StoreConnectionInfo(
  261.      PNFS41NP_NETRESOURCE pNfs41NetResource;
  262.      INT i;
  263.      bool FreeEntryFound = false;
  264. +    LUID authenticationid;
  265.  
  266.      DbgP((L"--> StoreConnectionInfo\n"));
  267.      
  268. +    (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
  269. +        &authenticationid);
  270. +
  271.      status = OpenSharedMemory(&hMutex, &hMemory,
  272.          &(PVOID)pSharedMemory);
  273.      if (status)
  274. @@ -243,6 +295,7 @@ static DWORD StoreConnectionInfo(
  275.      pNfs41NetResource->dwDisplayType    =
  276.          lpNetResource->dwDisplayType;
  277.      pNfs41NetResource->dwUsage          = RESOURCEUSAGE_CONNECTABLE;
  278. +    pNfs41NetResource->MountAuthId      = authenticationid;
  279.      pNfs41NetResource->LocalNameLength  =
  280.          (USHORT)(wcslen(LocalName) + 1) * sizeof(WCHAR);
  281.      pNfs41NetResource->RemoteNameLength =
  282. @@ -660,10 +713,14 @@ NPCancelConnection(
  283.  
  284.      HANDLE  hMutex, hMemory;
  285.      PNFS41NP_SHARED_MEMORY  pSharedMemory;
  286. +    LUID authenticationid;
  287.  
  288.      DbgP((L"--> NPCancelConnection(lpName='%s', fForce=%d)\n",
  289.          lpName, (int)fForce));
  290.  
  291. +    (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
  292. +        &authenticationid);
  293. +
  294.      Status = OpenSharedMemory(&hMutex,
  295.          &hMemory,
  296.          (PVOID)&pSharedMemory);
  297. @@ -684,7 +741,9 @@ NPCancelConnection(
  298.          pNetResource = &pSharedMemory->NetResources[Index];
  299.  
  300.          if (pNetResource->InUse) {
  301. -            if ((((wcslen(lpName)+1) * sizeof(WCHAR)) ==
  302. +            if (equal_luid(&authenticationid,
  303. +                    &pNetResource->MountAuthId) &&
  304. +                (((wcslen(lpName)+1) * sizeof(WCHAR)) ==
  305.                  pNetResource->LocalNameLength) &&
  306.                  (!wcscmp(lpName, pNetResource->LocalName))) {
  307.                  ULONG CopyBytes;
  308. @@ -749,9 +808,13 @@ NPGetConnection(
  309.  
  310.      HANDLE  hMutex, hMemory;
  311.      PNFS41NP_SHARED_MEMORY  pSharedMemory;
  312. +    LUID authenticationid;
  313.  
  314.      DbgP((L"--> NPGetConnection(lpLocalName='%s')\n", lpLocalName));
  315.  
  316. +    (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
  317. +        &authenticationid);
  318. +
  319.      Status = OpenSharedMemory(&hMutex,
  320.          &hMemory,
  321.          (PVOID)&pSharedMemory);
  322. @@ -767,7 +830,9 @@ NPGetConnection(
  323.          pNetResource = &pSharedMemory->NetResources[Index];
  324.  
  325.          if (pNetResource->InUse) {
  326. -            if ((((wcslen(lpLocalName)+1)*sizeof(WCHAR)) ==
  327. +            if (equal_luid(&authenticationid,
  328. +                    &pNetResource->MountAuthId) &&
  329. +                (((wcslen(lpLocalName)+1)*sizeof(WCHAR)) ==
  330.                      pNetResource->LocalNameLength) &&
  331.                      (!wcscmp(lpLocalName, pNetResource->LocalName))) {
  332.                  if (*lpBufferSize < pNetResource->RemoteNameLength) {
  333. @@ -854,10 +919,14 @@ NPEnumResource(
  334.      PNFS41NP_SHARED_MEMORY  pSharedMemory;
  335.      PNFS41NP_NETRESOURCE pNfsNetResource;
  336.      INT  Index = *(PULONG)hEnum;
  337. +    LUID authenticationid;
  338.  
  339.      DbgP((L"--> NPEnumResource(hEnum=0x%x, *lpcCount=%d)\n",
  340.          HANDLE2INT(hEnum), (int)*lpcCount));
  341.  
  342. +    (void)get_token_authenticationid(GetCurrentThreadEffectiveToken(),
  343. +        &authenticationid);
  344. +
  345.      pNetResource = (LPNETRESOURCE) lpBuffer;
  346.      SpaceAvailable = *lpBufferSize;
  347.      EntriesCopied = 0;
  348. @@ -875,7 +944,9 @@ NPEnumResource(
  349.      {
  350.          pNfsNetResource = &pSharedMemory->NetResources[Index];
  351.  
  352. -        if (pNfsNetResource->InUse)
  353. +        if (pNfsNetResource->InUse &&
  354. +            equal_luid(&authenticationid,
  355. +                &pNfsNetResource->MountAuthId))
  356.          {
  357.              SpaceNeeded  = sizeof(NETRESOURCE);
  358.              SpaceNeeded += pNfsNetResource->LocalNameLength;
  359. diff --git a/dll/nfs41_np.h b/dll/nfs41_np.h
  360. index 5f3d77c..bf440bd 100644
  361. --- a/dll/nfs41_np.h
  362. +++ b/dll/nfs41_np.h
  363. @@ -3,6 +3,7 @@
  364.   *
  365.   * Olga Kornievskaia <aglo@umich.edu>
  366.   * Casey Bodley <cbodley@umich.edu>
  367. + * Roland Mainz <roland.mainz@nrubsig.org>
  368.   *
  369.   * This library is free software; you can redistribute it and/or modify it
  370.   * under the terms of the GNU Lesser General Public License as published by
  371. @@ -35,6 +36,7 @@ typedef struct __NFS41NP_NETRESOURCE {
  372.      DWORD   dwType;
  373.      DWORD   dwDisplayType;
  374.      DWORD   dwUsage;
  375. +    LUID    MountAuthId;
  376.      WCHAR   LocalName[NFS41_SYS_MAX_PATH_LEN];
  377.      WCHAR   RemoteName[NFS41_SYS_MAX_PATH_LEN];
  378.      WCHAR   ConnectionName[NFS41_SYS_MAX_PATH_LEN];
  379. diff --git a/nfs41rdr.inf b/nfs41rdr.inf
  380. index 02ee912..4274370 100644
  381. --- a/nfs41rdr.inf
  382. +++ b/nfs41rdr.inf
  383. @@ -1,10 +1,8 @@
  384.  [Version]
  385.  Signature="$CHICAGO$"
  386. -DriverVer=05/27/2009,1.0
  387. -ClassGUID={00000000-0000-0000-0000-000000000000}
  388. -;Its possible that we should be using:
  389. -;Class=NetService
  390. -;ClassGUID={4d36e974-e325-11ce-bfc1-08002be10318}
  391. +DriverVer=06/12/2024,1.0.0.0
  392. +Class=NetService
  393. +ClassGUID={4d36e974-e325-11ce-bfc1-08002be10318}
  394.  CatalogFile=catalogfile.cat
  395.  Provider=%ProviderName%
  396.  
  397. diff --git a/sys/nfs41_driver.c b/sys/nfs41_driver.c
  398. index 58a312c..dd24405 100644
  399. --- a/sys/nfs41_driver.c
  400. +++ b/sys/nfs41_driver.c
  401. @@ -162,6 +162,7 @@ typedef struct _updowncall_entry {
  402.      FAST_MUTEX lock;
  403.      LIST_ENTRY next;
  404.      KEVENT cond;
  405. +#undef errno
  406.      DWORD errno;
  407.      BOOLEAN async_op;
  408.      SECURITY_CLIENT_CONTEXT sec_ctx;

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.

Syntax highlighting:

To highlight particular lines, prefix each line with {%HIGHLIGHT}




All content is user-submitted.
The administrators of this site (kpaste.net) are not responsible for their content.
Abuse reports should be emailed to us at