@zerodensity/smb-cpp 0.0.0-bootstrap.0 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/README.md +54 -3
  2. package/darwin_arm64/libsmb2.1.dylib +0 -0
  3. package/darwin_arm64/libsmb2.6.1.0.dylib +0 -0
  4. package/darwin_arm64/libsmb2.dylib +0 -0
  5. package/darwin_arm64/smb_server_cpp_darwin_arm64 +0 -0
  6. package/darwin_arm64/third-party/libsmb2/COPYING +24 -0
  7. package/darwin_arm64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
  8. package/darwin_arm64/third-party/libsmb2/NOTICE.txt +13 -0
  9. package/darwin_arm64/third-party/libsmb2/README +413 -0
  10. package/darwin_arm64/third-party/libsmb2/source/CMakeLists.txt +205 -0
  11. package/darwin_arm64/third-party/libsmb2/source/COPYING +24 -0
  12. package/darwin_arm64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
  13. package/darwin_arm64/third-party/libsmb2/source/Makefile.am +15 -0
  14. package/darwin_arm64/third-party/libsmb2/source/Makefile.platform +112 -0
  15. package/darwin_arm64/third-party/libsmb2/source/README +413 -0
  16. package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
  17. package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
  18. package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
  19. package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
  20. package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
  21. package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
  22. package/darwin_arm64/third-party/libsmb2/source/bootstrap +2 -0
  23. package/darwin_arm64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
  24. package/darwin_arm64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
  25. package/darwin_arm64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
  26. package/darwin_arm64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
  27. package/darwin_arm64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
  28. package/darwin_arm64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
  29. package/darwin_arm64/third-party/libsmb2/source/component.mk +5 -0
  30. package/darwin_arm64/third-party/libsmb2/source/configure.ac +184 -0
  31. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
  32. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
  33. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
  34. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
  35. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
  36. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
  37. package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
  38. package/darwin_arm64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
  39. package/darwin_arm64/third-party/libsmb2/source/examples/Makefile.am +54 -0
  40. package/darwin_arm64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
  41. package/darwin_arm64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
  42. package/darwin_arm64/third-party/libsmb2/source/examples/picow/README.md +2 -0
  43. package/darwin_arm64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
  44. package/darwin_arm64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
  45. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
  46. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
  47. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
  48. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
  49. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
  50. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
  51. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
  52. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
  53. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
  54. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
  55. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
  56. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
  57. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
  58. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
  59. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
  60. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
  61. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
  62. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
  63. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
  64. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
  65. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
  66. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
  67. package/darwin_arm64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
  68. package/darwin_arm64/third-party/libsmb2/source/idf_component.yml +5 -0
  69. package/darwin_arm64/third-party/libsmb2/source/include/Makefile.am +15 -0
  70. package/darwin_arm64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
  71. package/darwin_arm64/third-party/libsmb2/source/include/apple/config.h +139 -0
  72. package/darwin_arm64/third-party/libsmb2/source/include/asprintf.h +65 -0
  73. package/darwin_arm64/third-party/libsmb2/source/include/esp/config.h +139 -0
  74. package/darwin_arm64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
  75. package/darwin_arm64/third-party/libsmb2/source/include/module.modulemap +21 -0
  76. package/darwin_arm64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
  77. package/darwin_arm64/third-party/libsmb2/source/include/picow/README.md +2 -0
  78. package/darwin_arm64/third-party/libsmb2/source/include/picow/config.h +139 -0
  79. package/darwin_arm64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
  80. package/darwin_arm64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
  81. package/darwin_arm64/third-party/libsmb2/source/include/portable-endian.h +377 -0
  82. package/darwin_arm64/third-party/libsmb2/source/include/ps3/config.h +139 -0
  83. package/darwin_arm64/third-party/libsmb2/source/include/slist.h +63 -0
  84. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
  85. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
  86. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
  87. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
  88. package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
  89. package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
  90. package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
  91. package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
  92. package/darwin_arm64/third-party/libsmb2/source/include/xbox/config.h +139 -0
  93. package/darwin_arm64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
  94. package/darwin_arm64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
  95. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
  96. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
  97. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
  98. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
  99. package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.am +85 -0
  100. package/darwin_arm64/third-party/libsmb2/source/lib/aes.c +33 -0
  101. package/darwin_arm64/third-party/libsmb2/source/lib/aes.h +29 -0
  102. package/darwin_arm64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
  103. package/darwin_arm64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
  104. package/darwin_arm64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
  105. package/darwin_arm64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
  106. package/darwin_arm64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
  107. package/darwin_arm64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
  108. package/darwin_arm64/third-party/libsmb2/source/lib/alloc.c +154 -0
  109. package/darwin_arm64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
  110. package/darwin_arm64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
  111. package/darwin_arm64/third-party/libsmb2/source/lib/compat.c +599 -0
  112. package/darwin_arm64/third-party/libsmb2/source/lib/compat.h +829 -0
  113. package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
  114. package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
  115. package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
  116. package/darwin_arm64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
  117. package/darwin_arm64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
  118. package/darwin_arm64/third-party/libsmb2/source/lib/errors.c +1192 -0
  119. package/darwin_arm64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
  120. package/darwin_arm64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
  121. package/darwin_arm64/third-party/libsmb2/source/lib/hmac.c +245 -0
  122. package/darwin_arm64/third-party/libsmb2/source/lib/init.c +778 -0
  123. package/darwin_arm64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
  124. package/darwin_arm64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
  125. package/darwin_arm64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
  126. package/darwin_arm64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
  127. package/darwin_arm64/third-party/libsmb2/source/lib/md4.h +43 -0
  128. package/darwin_arm64/third-party/libsmb2/source/lib/md4c.c +289 -0
  129. package/darwin_arm64/third-party/libsmb2/source/lib/md5.c +249 -0
  130. package/darwin_arm64/third-party/libsmb2/source/lib/md5.h +76 -0
  131. package/darwin_arm64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
  132. package/darwin_arm64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
  133. package/darwin_arm64/third-party/libsmb2/source/lib/pdu.c +1159 -0
  134. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
  135. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
  136. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
  137. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
  138. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
  139. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
  140. package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
  141. package/darwin_arm64/third-party/libsmb2/source/lib/sha-private.h +28 -0
  142. package/darwin_arm64/third-party/libsmb2/source/lib/sha.h +334 -0
  143. package/darwin_arm64/third-party/libsmb2/source/lib/sha1.c +450 -0
  144. package/darwin_arm64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
  145. package/darwin_arm64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
  146. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
  147. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
  148. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
  149. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
  150. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
  151. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
  152. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
  153. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
  154. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
  155. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
  156. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
  157. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
  158. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
  159. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
  160. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
  161. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
  162. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
  163. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
  164. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
  165. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
  166. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
  167. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
  168. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
  169. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
  170. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
  171. package/darwin_arm64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
  172. package/darwin_arm64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
  173. package/darwin_arm64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
  174. package/darwin_arm64/third-party/libsmb2/source/lib/socket.c +1502 -0
  175. package/darwin_arm64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
  176. package/darwin_arm64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
  177. package/darwin_arm64/third-party/libsmb2/source/lib/sync.c +988 -0
  178. package/darwin_arm64/third-party/libsmb2/source/lib/timestamps.c +70 -0
  179. package/darwin_arm64/third-party/libsmb2/source/lib/unicode.c +307 -0
  180. package/darwin_arm64/third-party/libsmb2/source/lib/usha.c +345 -0
  181. package/darwin_arm64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
  182. package/darwin_arm64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
  183. package/darwin_arm64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
  184. package/darwin_arm64/third-party/libsmb2/source/tests/Makefile.am +34 -0
  185. package/darwin_arm64/third-party/libsmb2/source/tests/README +28 -0
  186. package/darwin_arm64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
  187. package/darwin_arm64/third-party/libsmb2/source/tests/functions.sh +11 -0
  188. package/darwin_arm64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
  189. package/darwin_arm64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
  190. package/darwin_arm64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
  191. package/darwin_arm64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
  192. package/darwin_arm64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
  193. package/darwin_arm64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
  194. package/darwin_arm64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
  195. package/darwin_arm64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
  196. package/darwin_arm64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
  197. package/darwin_arm64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
  198. package/darwin_arm64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
  199. package/darwin_arm64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
  200. package/darwin_arm64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
  201. package/darwin_arm64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
  202. package/darwin_arm64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
  203. package/darwin_arm64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
  204. package/darwin_arm64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
  205. package/darwin_arm64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
  206. package/darwin_arm64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
  207. package/darwin_arm64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
  208. package/darwin_arm64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
  209. package/darwin_arm64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
  210. package/darwin_arm64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
  211. package/darwin_arm64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
  212. package/darwin_arm64/third-party/libsmb2/source/utils/Makefile.am +11 -0
  213. package/darwin_arm64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
  214. package/darwin_arm64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
  215. package/linux_x64/libsmb2.so +0 -0
  216. package/linux_x64/libsmb2.so.1 +0 -0
  217. package/linux_x64/libsmb2.so.6.1.0 +0 -0
  218. package/linux_x64/smb_server_cpp_linux_x64 +0 -0
  219. package/linux_x64/third-party/libsmb2/COPYING +24 -0
  220. package/linux_x64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
  221. package/linux_x64/third-party/libsmb2/NOTICE.txt +13 -0
  222. package/linux_x64/third-party/libsmb2/README +413 -0
  223. package/linux_x64/third-party/libsmb2/source/CMakeLists.txt +205 -0
  224. package/linux_x64/third-party/libsmb2/source/COPYING +24 -0
  225. package/linux_x64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
  226. package/linux_x64/third-party/libsmb2/source/Makefile.am +15 -0
  227. package/linux_x64/third-party/libsmb2/source/Makefile.platform +112 -0
  228. package/linux_x64/third-party/libsmb2/source/README +413 -0
  229. package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
  230. package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
  231. package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
  232. package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
  233. package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
  234. package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
  235. package/linux_x64/third-party/libsmb2/source/bootstrap +2 -0
  236. package/linux_x64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
  237. package/linux_x64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
  238. package/linux_x64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
  239. package/linux_x64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
  240. package/linux_x64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
  241. package/linux_x64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
  242. package/linux_x64/third-party/libsmb2/source/component.mk +5 -0
  243. package/linux_x64/third-party/libsmb2/source/configure.ac +184 -0
  244. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
  245. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
  246. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
  247. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
  248. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
  249. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
  250. package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
  251. package/linux_x64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
  252. package/linux_x64/third-party/libsmb2/source/examples/Makefile.am +54 -0
  253. package/linux_x64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
  254. package/linux_x64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
  255. package/linux_x64/third-party/libsmb2/source/examples/picow/README.md +2 -0
  256. package/linux_x64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
  257. package/linux_x64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
  258. package/linux_x64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
  259. package/linux_x64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
  260. package/linux_x64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
  261. package/linux_x64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
  262. package/linux_x64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
  263. package/linux_x64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
  264. package/linux_x64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
  265. package/linux_x64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
  266. package/linux_x64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
  267. package/linux_x64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
  268. package/linux_x64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
  269. package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
  270. package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
  271. package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
  272. package/linux_x64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
  273. package/linux_x64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
  274. package/linux_x64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
  275. package/linux_x64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
  276. package/linux_x64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
  277. package/linux_x64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
  278. package/linux_x64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
  279. package/linux_x64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
  280. package/linux_x64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
  281. package/linux_x64/third-party/libsmb2/source/idf_component.yml +5 -0
  282. package/linux_x64/third-party/libsmb2/source/include/Makefile.am +15 -0
  283. package/linux_x64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
  284. package/linux_x64/third-party/libsmb2/source/include/apple/config.h +139 -0
  285. package/linux_x64/third-party/libsmb2/source/include/asprintf.h +65 -0
  286. package/linux_x64/third-party/libsmb2/source/include/esp/config.h +139 -0
  287. package/linux_x64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
  288. package/linux_x64/third-party/libsmb2/source/include/module.modulemap +21 -0
  289. package/linux_x64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
  290. package/linux_x64/third-party/libsmb2/source/include/picow/README.md +2 -0
  291. package/linux_x64/third-party/libsmb2/source/include/picow/config.h +139 -0
  292. package/linux_x64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
  293. package/linux_x64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
  294. package/linux_x64/third-party/libsmb2/source/include/portable-endian.h +377 -0
  295. package/linux_x64/third-party/libsmb2/source/include/ps3/config.h +139 -0
  296. package/linux_x64/third-party/libsmb2/source/include/slist.h +63 -0
  297. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
  298. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
  299. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
  300. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
  301. package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
  302. package/linux_x64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
  303. package/linux_x64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
  304. package/linux_x64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
  305. package/linux_x64/third-party/libsmb2/source/include/xbox/config.h +139 -0
  306. package/linux_x64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
  307. package/linux_x64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
  308. package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
  309. package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
  310. package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
  311. package/linux_x64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
  312. package/linux_x64/third-party/libsmb2/source/lib/Makefile.am +85 -0
  313. package/linux_x64/third-party/libsmb2/source/lib/aes.c +33 -0
  314. package/linux_x64/third-party/libsmb2/source/lib/aes.h +29 -0
  315. package/linux_x64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
  316. package/linux_x64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
  317. package/linux_x64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
  318. package/linux_x64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
  319. package/linux_x64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
  320. package/linux_x64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
  321. package/linux_x64/third-party/libsmb2/source/lib/alloc.c +154 -0
  322. package/linux_x64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
  323. package/linux_x64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
  324. package/linux_x64/third-party/libsmb2/source/lib/compat.c +599 -0
  325. package/linux_x64/third-party/libsmb2/source/lib/compat.h +829 -0
  326. package/linux_x64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
  327. package/linux_x64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
  328. package/linux_x64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
  329. package/linux_x64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
  330. package/linux_x64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
  331. package/linux_x64/third-party/libsmb2/source/lib/errors.c +1192 -0
  332. package/linux_x64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
  333. package/linux_x64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
  334. package/linux_x64/third-party/libsmb2/source/lib/hmac.c +245 -0
  335. package/linux_x64/third-party/libsmb2/source/lib/init.c +778 -0
  336. package/linux_x64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
  337. package/linux_x64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
  338. package/linux_x64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
  339. package/linux_x64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
  340. package/linux_x64/third-party/libsmb2/source/lib/md4.h +43 -0
  341. package/linux_x64/third-party/libsmb2/source/lib/md4c.c +289 -0
  342. package/linux_x64/third-party/libsmb2/source/lib/md5.c +249 -0
  343. package/linux_x64/third-party/libsmb2/source/lib/md5.h +76 -0
  344. package/linux_x64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
  345. package/linux_x64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
  346. package/linux_x64/third-party/libsmb2/source/lib/pdu.c +1159 -0
  347. package/linux_x64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
  348. package/linux_x64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
  349. package/linux_x64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
  350. package/linux_x64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
  351. package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
  352. package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
  353. package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
  354. package/linux_x64/third-party/libsmb2/source/lib/sha-private.h +28 -0
  355. package/linux_x64/third-party/libsmb2/source/lib/sha.h +334 -0
  356. package/linux_x64/third-party/libsmb2/source/lib/sha1.c +450 -0
  357. package/linux_x64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
  358. package/linux_x64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
  359. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
  360. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
  361. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
  362. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
  363. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
  364. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
  365. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
  366. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
  367. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
  368. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
  369. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
  370. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
  371. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
  372. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
  373. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
  374. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
  375. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
  376. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
  377. package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
  378. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
  379. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
  380. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
  381. package/linux_x64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
  382. package/linux_x64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
  383. package/linux_x64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
  384. package/linux_x64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
  385. package/linux_x64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
  386. package/linux_x64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
  387. package/linux_x64/third-party/libsmb2/source/lib/socket.c +1502 -0
  388. package/linux_x64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
  389. package/linux_x64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
  390. package/linux_x64/third-party/libsmb2/source/lib/sync.c +988 -0
  391. package/linux_x64/third-party/libsmb2/source/lib/timestamps.c +70 -0
  392. package/linux_x64/third-party/libsmb2/source/lib/unicode.c +307 -0
  393. package/linux_x64/third-party/libsmb2/source/lib/usha.c +345 -0
  394. package/linux_x64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
  395. package/linux_x64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
  396. package/linux_x64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
  397. package/linux_x64/third-party/libsmb2/source/tests/Makefile.am +34 -0
  398. package/linux_x64/third-party/libsmb2/source/tests/README +28 -0
  399. package/linux_x64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
  400. package/linux_x64/third-party/libsmb2/source/tests/functions.sh +11 -0
  401. package/linux_x64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
  402. package/linux_x64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
  403. package/linux_x64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
  404. package/linux_x64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
  405. package/linux_x64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
  406. package/linux_x64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
  407. package/linux_x64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
  408. package/linux_x64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
  409. package/linux_x64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
  410. package/linux_x64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
  411. package/linux_x64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
  412. package/linux_x64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
  413. package/linux_x64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
  414. package/linux_x64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
  415. package/linux_x64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
  416. package/linux_x64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
  417. package/linux_x64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
  418. package/linux_x64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
  419. package/linux_x64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
  420. package/linux_x64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
  421. package/linux_x64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
  422. package/linux_x64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
  423. package/linux_x64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
  424. package/linux_x64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
  425. package/linux_x64/third-party/libsmb2/source/utils/Makefile.am +11 -0
  426. package/linux_x64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
  427. package/linux_x64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
  428. package/package.json +10 -4
  429. package/smb2.proto +164 -0
  430. package/win32_x64/smb2.dll +0 -0
  431. package/win32_x64/smb_server_cpp_win32_x64.exe +0 -0
  432. package/win32_x64/third-party/libsmb2/COPYING +24 -0
  433. package/win32_x64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
  434. package/win32_x64/third-party/libsmb2/NOTICE.txt +13 -0
  435. package/win32_x64/third-party/libsmb2/README +413 -0
  436. package/win32_x64/third-party/libsmb2/source/CMakeLists.txt +205 -0
  437. package/win32_x64/third-party/libsmb2/source/COPYING +24 -0
  438. package/win32_x64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
  439. package/win32_x64/third-party/libsmb2/source/Makefile.am +15 -0
  440. package/win32_x64/third-party/libsmb2/source/Makefile.platform +112 -0
  441. package/win32_x64/third-party/libsmb2/source/README +413 -0
  442. package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
  443. package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
  444. package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
  445. package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
  446. package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
  447. package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
  448. package/win32_x64/third-party/libsmb2/source/bootstrap +2 -0
  449. package/win32_x64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
  450. package/win32_x64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
  451. package/win32_x64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
  452. package/win32_x64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
  453. package/win32_x64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
  454. package/win32_x64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
  455. package/win32_x64/third-party/libsmb2/source/component.mk +5 -0
  456. package/win32_x64/third-party/libsmb2/source/configure.ac +184 -0
  457. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
  458. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
  459. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
  460. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
  461. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
  462. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
  463. package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
  464. package/win32_x64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
  465. package/win32_x64/third-party/libsmb2/source/examples/Makefile.am +54 -0
  466. package/win32_x64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
  467. package/win32_x64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
  468. package/win32_x64/third-party/libsmb2/source/examples/picow/README.md +2 -0
  469. package/win32_x64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
  470. package/win32_x64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
  471. package/win32_x64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
  472. package/win32_x64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
  473. package/win32_x64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
  474. package/win32_x64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
  475. package/win32_x64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
  476. package/win32_x64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
  477. package/win32_x64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
  478. package/win32_x64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
  479. package/win32_x64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
  480. package/win32_x64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
  481. package/win32_x64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
  482. package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
  483. package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
  484. package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
  485. package/win32_x64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
  486. package/win32_x64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
  487. package/win32_x64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
  488. package/win32_x64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
  489. package/win32_x64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
  490. package/win32_x64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
  491. package/win32_x64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
  492. package/win32_x64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
  493. package/win32_x64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
  494. package/win32_x64/third-party/libsmb2/source/idf_component.yml +5 -0
  495. package/win32_x64/third-party/libsmb2/source/include/Makefile.am +15 -0
  496. package/win32_x64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
  497. package/win32_x64/third-party/libsmb2/source/include/apple/config.h +139 -0
  498. package/win32_x64/third-party/libsmb2/source/include/asprintf.h +65 -0
  499. package/win32_x64/third-party/libsmb2/source/include/esp/config.h +139 -0
  500. package/win32_x64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
  501. package/win32_x64/third-party/libsmb2/source/include/module.modulemap +21 -0
  502. package/win32_x64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
  503. package/win32_x64/third-party/libsmb2/source/include/picow/README.md +2 -0
  504. package/win32_x64/third-party/libsmb2/source/include/picow/config.h +139 -0
  505. package/win32_x64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
  506. package/win32_x64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
  507. package/win32_x64/third-party/libsmb2/source/include/portable-endian.h +377 -0
  508. package/win32_x64/third-party/libsmb2/source/include/ps3/config.h +139 -0
  509. package/win32_x64/third-party/libsmb2/source/include/slist.h +63 -0
  510. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
  511. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
  512. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
  513. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
  514. package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
  515. package/win32_x64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
  516. package/win32_x64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
  517. package/win32_x64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
  518. package/win32_x64/third-party/libsmb2/source/include/xbox/config.h +139 -0
  519. package/win32_x64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
  520. package/win32_x64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
  521. package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
  522. package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
  523. package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
  524. package/win32_x64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
  525. package/win32_x64/third-party/libsmb2/source/lib/Makefile.am +85 -0
  526. package/win32_x64/third-party/libsmb2/source/lib/aes.c +33 -0
  527. package/win32_x64/third-party/libsmb2/source/lib/aes.h +29 -0
  528. package/win32_x64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
  529. package/win32_x64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
  530. package/win32_x64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
  531. package/win32_x64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
  532. package/win32_x64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
  533. package/win32_x64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
  534. package/win32_x64/third-party/libsmb2/source/lib/alloc.c +154 -0
  535. package/win32_x64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
  536. package/win32_x64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
  537. package/win32_x64/third-party/libsmb2/source/lib/compat.c +599 -0
  538. package/win32_x64/third-party/libsmb2/source/lib/compat.h +829 -0
  539. package/win32_x64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
  540. package/win32_x64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
  541. package/win32_x64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
  542. package/win32_x64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
  543. package/win32_x64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
  544. package/win32_x64/third-party/libsmb2/source/lib/errors.c +1192 -0
  545. package/win32_x64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
  546. package/win32_x64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
  547. package/win32_x64/third-party/libsmb2/source/lib/hmac.c +245 -0
  548. package/win32_x64/third-party/libsmb2/source/lib/init.c +778 -0
  549. package/win32_x64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
  550. package/win32_x64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
  551. package/win32_x64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
  552. package/win32_x64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
  553. package/win32_x64/third-party/libsmb2/source/lib/md4.h +43 -0
  554. package/win32_x64/third-party/libsmb2/source/lib/md4c.c +289 -0
  555. package/win32_x64/third-party/libsmb2/source/lib/md5.c +249 -0
  556. package/win32_x64/third-party/libsmb2/source/lib/md5.h +76 -0
  557. package/win32_x64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
  558. package/win32_x64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
  559. package/win32_x64/third-party/libsmb2/source/lib/pdu.c +1159 -0
  560. package/win32_x64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
  561. package/win32_x64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
  562. package/win32_x64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
  563. package/win32_x64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
  564. package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
  565. package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
  566. package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
  567. package/win32_x64/third-party/libsmb2/source/lib/sha-private.h +28 -0
  568. package/win32_x64/third-party/libsmb2/source/lib/sha.h +334 -0
  569. package/win32_x64/third-party/libsmb2/source/lib/sha1.c +450 -0
  570. package/win32_x64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
  571. package/win32_x64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
  572. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
  573. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
  574. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
  575. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
  576. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
  577. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
  578. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
  579. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
  580. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
  581. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
  582. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
  583. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
  584. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
  585. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
  586. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
  587. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
  588. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
  589. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
  590. package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
  591. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
  592. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
  593. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
  594. package/win32_x64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
  595. package/win32_x64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
  596. package/win32_x64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
  597. package/win32_x64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
  598. package/win32_x64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
  599. package/win32_x64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
  600. package/win32_x64/third-party/libsmb2/source/lib/socket.c +1502 -0
  601. package/win32_x64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
  602. package/win32_x64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
  603. package/win32_x64/third-party/libsmb2/source/lib/sync.c +988 -0
  604. package/win32_x64/third-party/libsmb2/source/lib/timestamps.c +70 -0
  605. package/win32_x64/third-party/libsmb2/source/lib/unicode.c +307 -0
  606. package/win32_x64/third-party/libsmb2/source/lib/usha.c +345 -0
  607. package/win32_x64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
  608. package/win32_x64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
  609. package/win32_x64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
  610. package/win32_x64/third-party/libsmb2/source/tests/Makefile.am +34 -0
  611. package/win32_x64/third-party/libsmb2/source/tests/README +28 -0
  612. package/win32_x64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
  613. package/win32_x64/third-party/libsmb2/source/tests/functions.sh +11 -0
  614. package/win32_x64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
  615. package/win32_x64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
  616. package/win32_x64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
  617. package/win32_x64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
  618. package/win32_x64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
  619. package/win32_x64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
  620. package/win32_x64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
  621. package/win32_x64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
  622. package/win32_x64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
  623. package/win32_x64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
  624. package/win32_x64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
  625. package/win32_x64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
  626. package/win32_x64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
  627. package/win32_x64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
  628. package/win32_x64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
  629. package/win32_x64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
  630. package/win32_x64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
  631. package/win32_x64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
  632. package/win32_x64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
  633. package/win32_x64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
  634. package/win32_x64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
  635. package/win32_x64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
  636. package/win32_x64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
  637. package/win32_x64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
  638. package/win32_x64/third-party/libsmb2/source/utils/Makefile.am +11 -0
  639. package/win32_x64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
  640. package/win32_x64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
@@ -0,0 +1,1159 @@
1
+ /* -*- mode:c; tab-width:8; c-basic-offset:8; indent-tabs-mode:nil; -*- */
2
+ /*
3
+ Copyright (C) 2016 by Ronnie Sahlberg <ronniesahlberg@gmail.com>
4
+
5
+ This program is free software; you can redistribute it and/or modify
6
+ it under the terms of the GNU Lesser General Public License as published by
7
+ the Free Software Foundation; either version 2.1 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU Lesser General Public License for more details.
14
+
15
+ You should have received a copy of the GNU Lesser General Public License
16
+ along with this program; if not, see <http://www.gnu.org/licenses/>.
17
+ */
18
+ #ifdef HAVE_CONFIG_H
19
+ #include "config.h"
20
+ #endif
21
+
22
+ #ifndef _GNU_SOURCE
23
+ #define _GNU_SOURCE
24
+ #endif
25
+
26
+ #ifdef HAVE_STDINT_H
27
+ #include <stdint.h>
28
+ #endif
29
+
30
+ #ifdef HAVE_STDLIB_H
31
+ #include <stdlib.h>
32
+ #endif
33
+
34
+ #ifdef HAVE_STDIO_H
35
+ #include <stdio.h>
36
+ #endif
37
+
38
+ #ifdef HAVE_STRING_H
39
+ #include <string.h>
40
+ #endif
41
+
42
+ #ifdef HAVE_TIME_H
43
+ #include <time.h>
44
+ #endif
45
+
46
+ #ifdef HAVE_SYS_TIME_H
47
+ #include <sys/time.h>
48
+ #endif
49
+
50
+ #include "compat.h"
51
+
52
+ #include "portable-endian.h"
53
+
54
+ #include "slist.h"
55
+ #include "smb2.h"
56
+ #include "libsmb2.h"
57
+ #include "libsmb2-private.h"
58
+ #include "smb3-seal.h"
59
+ #include "smb2-signing.h"
60
+
61
+ int
62
+ smb2_pad_to_64bit(struct smb2_context *smb2, struct smb2_io_vectors *v)
63
+ {
64
+ static uint8_t zero_bytes[7];
65
+ int i, len = 0;
66
+
67
+ for (i = 0; i < v->niov; i++) {
68
+ len += (int)v->iov[i].len;
69
+ }
70
+ if ((len & 0x07) == 0) {
71
+ return 0;
72
+ }
73
+ if (smb2_add_iovector(smb2, v,
74
+ &zero_bytes[0],
75
+ 8 - (len & 0x07), NULL)
76
+ == NULL) {
77
+ return -1;
78
+ }
79
+
80
+ return 0;
81
+ }
82
+
83
+ #include <stdio.h>
84
+
85
+ struct smb2_pdu *
86
+ smb2_allocate_pdu(struct smb2_context *smb2, enum smb2_command command,
87
+ smb2_command_cb cb, void *cb_data)
88
+ {
89
+ struct smb2_pdu *pdu;
90
+ struct smb2_header *hdr;
91
+ char magic[4] = {0xFE, 'S', 'M', 'B'};
92
+
93
+ pdu = calloc(1, sizeof(struct smb2_pdu));
94
+ if (pdu == NULL) {
95
+ smb2_set_error(smb2, "Failed to allocate pdu");
96
+ return NULL;
97
+ }
98
+
99
+ hdr = &pdu->header;
100
+
101
+ memcpy(hdr->protocol_id, magic, 4);
102
+
103
+ /* ZERO out the signature
104
+ * Signature calculation happens by zeroing out
105
+ */
106
+ memset(hdr->signature, 0, 16);
107
+
108
+ hdr->struct_size = SMB2_HEADER_SIZE;
109
+ hdr->command = command;
110
+ hdr->flags = 0;
111
+ hdr->sync.process_id = 0xFEFF;
112
+
113
+ if (smb2->dialect == SMB2_VERSION_0202) {
114
+ hdr->credit_charge = 0;
115
+ } else if (hdr->command == SMB2_NEGOTIATE) {
116
+ /* We don't have any credits yet during negprot by
117
+ * looking at traces.
118
+ */
119
+ hdr->credit_charge = 0;
120
+ } else {
121
+ /* Assume the credits for this PDU will be 1.
122
+ * READ/WRITE/IOCTL/QUERYDIR that consumes more than
123
+ * 1 credit will adjusted this after it has marshalled the
124
+ * fixed part of the PDU.
125
+ */
126
+ hdr->credit_charge = 1;
127
+ }
128
+ hdr->credit_request_response = MAX_CREDITS - smb2->credits;
129
+
130
+ switch (command) {
131
+ case SMB2_NEGOTIATE:
132
+ case SMB2_SESSION_SETUP:
133
+ case SMB2_LOGOFF:
134
+ case SMB2_ECHO:
135
+ /* case SMB2_CANCEL: */
136
+ hdr->sync.tree_id = 0;
137
+ break;
138
+ case SMB2_TREE_CONNECT:
139
+ /* [MS-SMB2] 2.2.1.2 */
140
+ hdr->sync.tree_id = 0;
141
+ break;
142
+ default:
143
+ hdr->sync.tree_id = smb2_tree_id(smb2);
144
+ break;
145
+ }
146
+
147
+ switch (command) {
148
+ case SMB2_NEGOTIATE:
149
+ break;
150
+ default:
151
+ hdr->session_id = smb2->session_id;
152
+ }
153
+
154
+ pdu->cb = cb;
155
+ pdu->cb_data = cb_data;
156
+ pdu->out.niov = 0;
157
+
158
+ if (smb2_add_iovector(smb2, &pdu->out, pdu->hdr, SMB2_HEADER_SIZE, NULL) == NULL) {
159
+ free(pdu);
160
+ smb2_set_error(smb2, "Too many I/O vectors when adding SMB2 header");
161
+ return NULL;
162
+ }
163
+
164
+ switch (command) {
165
+ case SMB2_NEGOTIATE:
166
+ case SMB2_SESSION_SETUP:
167
+ break;
168
+ default:
169
+ if (smb2->seal) {
170
+ pdu->seal = 1;
171
+ }
172
+ }
173
+
174
+ if (smb2->timeout) {
175
+ pdu->timeout = time(NULL) + smb2->timeout;
176
+ }
177
+
178
+ return pdu;
179
+ }
180
+
181
+ int
182
+ smb2_select_tree_id(struct smb2_context *smb2, uint32_t tree_id)
183
+ {
184
+ int i;
185
+
186
+ for (
187
+ i = 1;
188
+ i <= smb2->tree_id_top && i <= SMB2_MAX_TREE_NESTING;
189
+ i++
190
+ ) {
191
+ if (smb2->tree_id[i] == tree_id) {
192
+ break;
193
+ }
194
+ }
195
+ if (i <= smb2->tree_id_top) {
196
+ smb2->tree_id_cur = i;
197
+ }
198
+ else {
199
+ smb2_set_error(smb2, "No connected tree-id %08X to select", tree_id);
200
+ return -1;
201
+ }
202
+ return 0;
203
+ }
204
+
205
+ int
206
+ smb2_get_tree_id_for_pdu(struct smb2_context *smb2, struct smb2_pdu *pdu, uint32_t *tree_id)
207
+ {
208
+ if (pdu) {
209
+ switch (pdu->header.command) {
210
+ case SMB2_NEGOTIATE:
211
+ case SMB2_SESSION_SETUP:
212
+ case SMB2_LOGOFF:
213
+ case SMB2_ECHO:
214
+ /* case SMB2_CANCEL: */
215
+ case SMB2_TREE_CONNECT:
216
+ *tree_id = 0;
217
+ return 0;
218
+ default:
219
+ break;
220
+ }
221
+ }
222
+ if (smb2->tree_id_top > 0) {
223
+ *tree_id = smb2->tree_id[smb2->tree_id_cur];
224
+ }
225
+ else {
226
+ smb2_set_error(smb2, "No tree-id connected");
227
+ *tree_id = 0xdeadbeef;
228
+ return -1;
229
+ }
230
+ return 0;
231
+ }
232
+
233
+ int
234
+ smb2_set_tree_id_for_pdu(struct smb2_context *smb2, struct smb2_pdu *pdu, uint32_t tree_id)
235
+ {
236
+ if (pdu) {
237
+ if (pdu->header.flags & SMB2_FLAGS_ASYNC_COMMAND) {
238
+ smb2_set_error(smb2, "no tree id for async pdu");
239
+ return 0;
240
+ }
241
+ switch (pdu->header.command) {
242
+ case SMB2_NEGOTIATE:
243
+ case SMB2_SESSION_SETUP:
244
+ case SMB2_LOGOFF:
245
+ case SMB2_ECHO:
246
+ /* case SMB2_CANCEL: */
247
+ break;
248
+ case SMB2_TREE_CONNECT:
249
+ break;
250
+ default:
251
+ pdu->header.sync.tree_id = tree_id;
252
+ }
253
+ return 0;
254
+ }
255
+ return -1;
256
+ }
257
+
258
+ int smb2_get_session_id(struct smb2_context* smb2, uint64_t *session_id)
259
+ {
260
+ *session_id = smb2->session_id;
261
+
262
+ return 0;
263
+ }
264
+
265
+ int
266
+ smb2_connect_tree_id(struct smb2_context *smb2, uint32_t tree_id)
267
+ {
268
+ if (smb2->tree_id_top < (SMB2_MAX_TREE_NESTING - 1)) {
269
+ smb2->tree_id[++smb2->tree_id_top] = tree_id;
270
+ smb2->tree_id_cur = smb2->tree_id_top;
271
+ }
272
+ else {
273
+ smb2_set_error(smb2, "Tree nesting too deep");
274
+ return -1;
275
+ }
276
+ return 0;
277
+ }
278
+
279
+ int
280
+ smb2_disconnect_tree_id(struct smb2_context *smb2, uint32_t tree_id)
281
+ {
282
+ int i, j;
283
+
284
+ if (smb2->tree_id_top > 0) {
285
+ for (
286
+ i = 1;
287
+ i <= smb2->tree_id_top && i <= SMB2_MAX_TREE_NESTING;
288
+ i++
289
+ ) {
290
+ if (smb2->tree_id[i] == tree_id) {
291
+ break;
292
+ }
293
+ }
294
+ if (i <= smb2->tree_id_top) {
295
+ for (j = i; j < smb2->tree_id_top; j++) {
296
+ smb2->tree_id[j] = smb2->tree_id[j + 1];
297
+ }
298
+ smb2->tree_id_top--;
299
+ /* not sure what tree id should be after a disconnect but
300
+ * this makes sure its not invalid */
301
+ if (smb2->tree_id_cur > smb2->tree_id_top) {
302
+ smb2->tree_id_cur = smb2->tree_id_top;
303
+ }
304
+ return 0;
305
+ }
306
+ }
307
+
308
+ smb2_set_error(smb2, "No tree-id %08X to remove", tree_id);
309
+ return -1;
310
+ }
311
+ int
312
+ smb2_pdu_is_compound(struct smb2_context *smb2)
313
+ {
314
+ return (smb2) ?
315
+ (smb2->hdr.next_command != 0) : 0;
316
+ }
317
+
318
+ void
319
+ smb2_add_compound_pdu(struct smb2_context *smb2,
320
+ struct smb2_pdu *pdu, struct smb2_pdu *next_pdu)
321
+ {
322
+ int i, offset;
323
+
324
+ /* find the last pdu in the chain */
325
+ while (pdu->next_compound) {
326
+ pdu = pdu->next_compound;
327
+ }
328
+ pdu->next_compound = next_pdu;
329
+
330
+ /* Fixup the next offset in the header */
331
+ for (i = 0, offset = 0; i < pdu->out.niov; i++) {
332
+ offset += (int)pdu->out.iov[i].len;
333
+ }
334
+
335
+ pdu->header.next_command = offset;
336
+ smb2_set_uint32(&pdu->out.iov[0], 20, pdu->header.next_command);
337
+
338
+ /* Fixup flags */
339
+ next_pdu->header.flags |= SMB2_FLAGS_RELATED_OPERATIONS;
340
+ smb2_set_uint32(&next_pdu->out.iov[0], 16, next_pdu->header.flags);
341
+ }
342
+
343
+ void
344
+ smb2_free_pdu(struct smb2_context *smb2, struct smb2_pdu *pdu)
345
+ {
346
+ SMB2_LIST_REMOVE(&smb2->outqueue, pdu);
347
+ SMB2_LIST_REMOVE(&smb2->waitqueue, pdu);
348
+
349
+ if (pdu->next_compound) {
350
+ smb2_free_pdu(smb2, pdu->next_compound);
351
+ }
352
+
353
+ smb2_free_iovector(smb2, &pdu->out);
354
+ smb2_free_iovector(smb2, &pdu->in);
355
+
356
+ if (pdu->free_cb != NULL) {
357
+ pdu->free_cb(pdu->cb_data);
358
+ }
359
+
360
+ if (pdu->free_payload != NULL) {
361
+ pdu->free_payload(smb2, pdu->payload);
362
+ }
363
+
364
+ free(pdu->payload);
365
+ free(pdu->crypt);
366
+ free(pdu);
367
+ }
368
+
369
+ int
370
+ smb2_set_uint8(struct smb2_iovec *iov, int offset, uint8_t value)
371
+ {
372
+ if (offset + sizeof(uint8_t) > iov->len) {
373
+ return -1;
374
+ }
375
+ iov->buf[offset] = value;
376
+ return 0;
377
+ }
378
+
379
+ int
380
+ smb2_set_uint16(struct smb2_iovec *iov, int offset, uint16_t value)
381
+ {
382
+ if (offset + sizeof(uint16_t) > iov->len) {
383
+ return -1;
384
+ }
385
+ *(uint16_t *)(void *)(iov->buf + offset) = htole16(value);
386
+ return 0;
387
+ }
388
+
389
+ int
390
+ smb2_set_uint32(struct smb2_iovec *iov, int offset, uint32_t value)
391
+ {
392
+ if (offset + sizeof(uint32_t) > iov->len) {
393
+ return -1;
394
+ }
395
+ *(uint32_t *)(void *)(iov->buf + offset) = htole32(value);
396
+ return 0;
397
+ }
398
+
399
+ int
400
+ smb2_set_uint64(struct smb2_iovec *iov, int offset, uint64_t value)
401
+ {
402
+ if (offset + sizeof(uint64_t) > iov->len) {
403
+ return -1;
404
+ }
405
+ value = htole64(value);
406
+ memcpy(iov->buf + offset, &value, 8);
407
+ return 0;
408
+ }
409
+
410
+ int
411
+ smb2_get_uint8(struct smb2_iovec *iov, int offset, uint8_t *value)
412
+ {
413
+ if (offset + sizeof(uint8_t) > iov->len) {
414
+ return -1;
415
+ }
416
+ *value = iov->buf[offset];
417
+ return 0;
418
+ }
419
+
420
+ int
421
+ smb2_get_uint16(struct smb2_iovec *iov, int offset, uint16_t *value)
422
+ {
423
+ uint16_t tmp;
424
+
425
+ if (offset + sizeof(uint16_t) > iov->len) {
426
+ return -1;
427
+ }
428
+ memcpy(&tmp, iov->buf + offset, sizeof(uint16_t));
429
+ *value = le16toh(tmp);
430
+ return 0;
431
+ }
432
+
433
+ int
434
+ smb2_get_uint32(struct smb2_iovec *iov, int offset, uint32_t *value)
435
+ {
436
+ uint32_t tmp;
437
+
438
+ if (offset + sizeof(uint32_t) > iov->len) {
439
+ return -1;
440
+ }
441
+ memcpy(&tmp, iov->buf + offset, sizeof(uint32_t));
442
+ *value = le32toh(tmp);
443
+ return 0;
444
+ }
445
+
446
+ int
447
+ smb2_get_uint64(struct smb2_iovec *iov, int offset, uint64_t *value)
448
+ {
449
+ uint64_t tmp;
450
+
451
+ if (offset + sizeof(uint64_t) > iov->len) {
452
+ return -1;
453
+ }
454
+ memcpy(&tmp, iov->buf + offset, sizeof(uint64_t));
455
+ *value = le64toh(tmp);
456
+ return 0;
457
+ }
458
+
459
+ static void
460
+ smb2_encode_header(struct smb2_context *smb2, struct smb2_iovec *iov,
461
+ struct smb2_header *hdr)
462
+ {
463
+ if (!smb2_is_server(smb2)) {
464
+ hdr->message_id = smb2->message_id++;
465
+ if (hdr->credit_charge > 1) {
466
+ smb2->message_id += (hdr->credit_charge - 1);
467
+ }
468
+ }
469
+
470
+ memcpy(iov->buf, hdr->protocol_id, 4);
471
+ smb2_set_uint16(iov, 4, hdr->struct_size);
472
+ smb2_set_uint16(iov, 6, hdr->credit_charge);
473
+ smb2_set_uint32(iov, 8, hdr->status);
474
+ smb2_set_uint16(iov, 12, hdr->command);
475
+ smb2_set_uint16(iov, 14, hdr->credit_request_response);
476
+ smb2_set_uint32(iov, 16, hdr->flags);
477
+ smb2_set_uint32(iov, 20, hdr->next_command);
478
+ smb2_set_uint64(iov, 24, hdr->message_id);
479
+
480
+ if (hdr->flags & SMB2_FLAGS_ASYNC_COMMAND) {
481
+ smb2_set_uint64(iov, 32, hdr->async.async_id);
482
+ } else {
483
+ /*
484
+ printf(">>>>>>>>>> %p %s %d treeid=%08x %08X\n", smb2,
485
+ (hdr->flags & SMB2_FLAGS_SERVER_TO_REDIR) ? "rep" : "cmd",
486
+ hdr->command, hdr->sync.tree_id, smb2_tree_id(smb2));
487
+ */
488
+ smb2_set_uint32(iov, 32, hdr->sync.process_id);
489
+ smb2_set_uint32(iov, 36, hdr->sync.tree_id);
490
+ }
491
+
492
+ smb2_set_uint64(iov, 40, hdr->session_id);
493
+ memcpy(iov->buf + 48, hdr->signature, 16);
494
+ }
495
+
496
+ int
497
+ smb2_decode_header(struct smb2_context *smb2, struct smb2_iovec *iov,
498
+ struct smb2_header *hdr)
499
+ {
500
+ static char smb1sign[4] = {0xFF, 'S', 'M', 'B'};
501
+ static char smb2sign[4] = {0xFE, 'S', 'M', 'B'};
502
+
503
+ if (iov->len < SMB2_HEADER_SIZE) {
504
+ smb2_set_error(smb2, "io vector for header is too small");
505
+ return -1;
506
+ }
507
+ if (!memcmp(iov->buf, smb1sign, 4)) {
508
+ /* an SMBv1 request. if it is a negotiate request
509
+ * allow it through, else ingore */
510
+ if (iov->buf[4] == SMB1_NEGOTIATE) {
511
+ /*printf("Handling SMBv1 Negotiate\n");*/
512
+ memset(hdr, 0, sizeof *hdr);
513
+ hdr->command = SMB1_NEGOTIATE;
514
+ return 0;
515
+ }
516
+ smb2_set_error(smb2, "not handling SMBv1 request");
517
+ return -1;
518
+ }
519
+ if (memcmp(iov->buf, smb2sign, 4)) {
520
+ smb2_set_error(smb2, "bad SMB signature in header");
521
+ return -1;
522
+ }
523
+ memcpy(&hdr->protocol_id, iov->buf, 4);
524
+ smb2_get_uint16(iov, 4, &hdr->struct_size);
525
+ smb2_get_uint16(iov, 6, &hdr->credit_charge);
526
+ smb2_get_uint32(iov, 8, &hdr->status);
527
+ smb2_get_uint16(iov, 12, &hdr->command);
528
+ smb2_get_uint16(iov, 14, &hdr->credit_request_response);
529
+ smb2_get_uint32(iov, 16, &hdr->flags);
530
+ smb2_get_uint32(iov, 20, &hdr->next_command);
531
+ smb2_get_uint64(iov, 24, &hdr->message_id);
532
+
533
+ if (hdr->flags & SMB2_FLAGS_ASYNC_COMMAND) {
534
+ smb2_get_uint64(iov, 32, &hdr->async.async_id);
535
+ } else {
536
+ smb2_get_uint32(iov, 32, &hdr->sync.process_id);
537
+ smb2_get_uint32(iov, 36, &hdr->sync.tree_id);
538
+ /*
539
+ printf("<<<<<<<<<<< %p %s %d treeid=%08x %08X\n", smb2,
540
+ (hdr->flags & SMB2_FLAGS_SERVER_TO_REDIR) ? "rep" : "cmd",
541
+ hdr->command, hdr->sync.tree_id, smb2_tree_id(smb2));
542
+ */
543
+ /* for requests, set the context tree id to the header value
544
+ */
545
+ if (!(hdr->flags & SMB2_FLAGS_SERVER_TO_REDIR)) {
546
+ switch (hdr->command) {
547
+ case SMB2_NEGOTIATE:
548
+ case SMB2_SESSION_SETUP:
549
+ case SMB2_LOGOFF:
550
+ case SMB2_ECHO:
551
+ /* case SMB2_CANCEL: */
552
+ break;
553
+ case SMB2_TREE_CONNECT:
554
+ break;
555
+ default:
556
+ /* TODO - care about not having this already connected */
557
+ smb2_select_tree_id(smb2, hdr->sync.tree_id);
558
+ break;
559
+ }
560
+ }
561
+ }
562
+ if (smb2_is_server(smb2)) {
563
+ /* remember message id to format a reply for this
564
+ * request (or ack this notification) */
565
+ smb2->message_id = hdr->message_id;
566
+ }
567
+ smb2_get_uint64(iov, 40, &hdr->session_id);
568
+ memcpy(&hdr->signature, iov->buf + 48, 16);
569
+
570
+ return 0;
571
+ }
572
+
573
+ static void
574
+ smb2_add_to_outqueue(struct smb2_context *smb2, struct smb2_pdu *pdu)
575
+ {
576
+ SMB2_LIST_ADD_END(&smb2->outqueue, pdu);
577
+
578
+ /* opportunistically try to write it to the socket right away */
579
+ if (smb2->outqueue == pdu) {
580
+ smb2_write_to_socket(smb2);
581
+ }
582
+
583
+ smb2_change_events(smb2, smb2->fd, smb2_which_events(smb2));
584
+ }
585
+
586
+ static int
587
+ smb2_correlate_reply(struct smb2_context *smb2, struct smb2_pdu *pdu)
588
+ {
589
+ struct smb2_pdu *req_pdu;
590
+ int ret = 0;
591
+
592
+ req_pdu = smb2_find_pdu(smb2, pdu->header.message_id);
593
+ if (req_pdu == NULL) {
594
+ if (pdu->header.command != SMB2_OPLOCK_BREAK) {
595
+ smb2_set_error(smb2, "no matching request PDU "
596
+ "found for reply to cmd %d id %llu",
597
+ pdu->header.command, pdu->header.message_id);
598
+ return -1;
599
+ } else {
600
+ /* sending an unsolicited break */
601
+ pdu->header.message_id = 0xffffffffffffffffULL;
602
+ pdu->header.sync.tree_id = 0;
603
+ pdu->header.session_id = 0;
604
+ }
605
+ } else {
606
+ uint16_t credit_grant = req_pdu->header.credit_request_response;
607
+
608
+ /* some clients (lookin at you nautilus) break if their credits
609
+ * increment too far (and probably wrap to 0) so limit credits
610
+ * to what the client requests only and if the clients charge
611
+ * is greater than ours, charge the larger amount so they cant
612
+ * accumulate on the client
613
+ */
614
+ if (credit_grant > 0xf000) {
615
+ pdu->header.credit_request_response = 0xffff;
616
+ } else {
617
+ pdu->header.credit_request_response = credit_grant;
618
+ }
619
+
620
+ if (req_pdu->header.credit_charge > pdu->header.credit_charge) {
621
+ pdu->header.credit_charge = req_pdu->header.credit_charge;
622
+ }
623
+
624
+ /* replies always have to have the same message-id and tree-id as
625
+ * the request we sent, so use the request from the wait queue
626
+ * to make sure that is the case. (exception is tree-connect where
627
+ * the reply has the new tree-id and request was 0)
628
+ */
629
+ pdu->header.message_id = req_pdu->header.message_id;
630
+ if (pdu->header.command != SMB2_TREE_CONNECT) {
631
+ pdu->header.sync.tree_id = req_pdu->header.sync.tree_id;
632
+ }
633
+
634
+ /* remove the request from the waitqueue when we get its reply
635
+ * unless this is an async status-pending reply
636
+ */
637
+ if ((pdu->header.flags & SMB2_FLAGS_ASYNC_COMMAND) &&
638
+ (pdu->header.status == SMB2_STATUS_PENDING)) {
639
+ /* the real reply will be queued later so we leave the request
640
+ * in the list to be correlated with that. we will also mark the
641
+ * request as async as well so when the real reply gets here
642
+ * we will know to set the async-id and flag
643
+ */
644
+ pdu->header.async.async_id = ++smb2->async_id;
645
+ req_pdu->header.async.async_id = pdu->header.async.async_id;
646
+ req_pdu->header.flags |= SMB2_FLAGS_ASYNC_COMMAND;
647
+ } else {
648
+ /* if this is the real-reply to an async operation, also
649
+ * set the async flag and id (MS-SMB2 3.2.5.1.5)
650
+ */
651
+ if (req_pdu->header.flags & SMB2_FLAGS_ASYNC_COMMAND) {
652
+ pdu->header.flags |= SMB2_FLAGS_ASYNC_COMMAND;
653
+ pdu->header.async.async_id = req_pdu->header.async.async_id;
654
+ }
655
+ SMB2_LIST_REMOVE(&smb2->waitqueue, req_pdu);
656
+ smb2_free_pdu(smb2, req_pdu);
657
+ }
658
+ }
659
+ return ret;
660
+ }
661
+
662
+ void
663
+ smb2_queue_pdu(struct smb2_context *smb2, struct smb2_pdu *pdu)
664
+ {
665
+ struct smb2_pdu *p;
666
+ uint64_t prev_compound_mid = 0;
667
+
668
+ /* Update all the PDU headers in this chain */
669
+ for (p = pdu; p; p = p->next_compound) {
670
+ if (smb2_is_server(smb2)) {
671
+ /* set reply flag, servers will only reply */
672
+ pdu->header.flags |= SMB2_FLAGS_SERVER_TO_REDIR;
673
+
674
+ /* set async flag for status==pending */
675
+ if (pdu->header.status == SMB2_STATUS_PENDING) {
676
+ pdu->header.flags |= SMB2_FLAGS_ASYNC_COMMAND;
677
+ }
678
+
679
+ /* the server handler functions must set message id unless this
680
+ * is a negotiate request, in which case it should be 0
681
+ */
682
+ if (!pdu->header.message_id && pdu->header.command != SMB2_NEGOTIATE) {
683
+ smb2_set_error(smb2, "Queued pdu has no message id");
684
+ smb2_free_pdu(smb2, pdu);
685
+ return;
686
+ }
687
+
688
+ smb2_correlate_reply(smb2, p);
689
+ /* TODO - care about check reply failures? */
690
+ }
691
+ smb2_encode_header(smb2, &p->out.iov[0], &p->header);
692
+ if (!smb2_is_server(smb2)) {
693
+ /*
694
+ * Track the mid of the previous command in the chain
695
+ * so we can enforce ordering on receive.
696
+ */
697
+ p->prev_compound_mid = prev_compound_mid;
698
+ prev_compound_mid = p->header.message_id;
699
+ }
700
+
701
+ if (smb2->sign ||
702
+ (p->header.command == SMB2_TREE_CONNECT && smb2->dialect == SMB2_VERSION_0311 && !smb2->seal)) {
703
+ if (smb2_pdu_add_signature(smb2, p) < 0) {
704
+ smb2_set_error(smb2, "Failure to add "
705
+ "signature. %s",
706
+ smb2_get_error(smb2));
707
+ }
708
+ }
709
+ }
710
+
711
+ smb3_encrypt_pdu(smb2, pdu);
712
+
713
+ smb2_add_to_outqueue(smb2, pdu);
714
+ }
715
+
716
+ struct smb2_pdu *
717
+ smb2_get_compound_pdu(struct smb2_context *smb2,
718
+ struct smb2_pdu *pdu)
719
+ {
720
+ if (pdu && pdu->next_compound) {
721
+ return pdu->next_compound;
722
+ }
723
+
724
+ return NULL;
725
+ }
726
+
727
+ void
728
+ smb2_set_pdu_status(struct smb2_context *smb2, struct smb2_pdu *pdu, int status)
729
+ {
730
+ pdu->header.status = status;
731
+ }
732
+
733
+ void
734
+ smb2_set_pdu_message_id(struct smb2_context *smb2, struct smb2_pdu *pdu, uint64_t message_id)
735
+ {
736
+ pdu->header.message_id = message_id;
737
+ }
738
+
739
+ uint64_t
740
+ smb2_get_pdu_message_id(struct smb2_context *smb2, struct smb2_pdu *pdu)
741
+ {
742
+ if (pdu) {
743
+ return pdu->header.message_id;
744
+ }
745
+ return 0;
746
+ }
747
+
748
+ uint64_t
749
+ smb2_get_last_request_message_id(struct smb2_context *smb2)
750
+ {
751
+ if (smb2) {
752
+ return smb2->message_id;
753
+ }
754
+ return 0;
755
+ }
756
+
757
+ uint64_t
758
+ smb2_get_last_reply_message_id(struct smb2_context *smb2)
759
+ {
760
+ if (smb2) {
761
+ return smb2->hdr.message_id;
762
+ }
763
+ return 0;
764
+ }
765
+
766
+ struct smb2_pdu *
767
+ smb2_find_pdu(struct smb2_context *smb2,
768
+ uint64_t message_id) {
769
+ struct smb2_pdu *pdu;
770
+
771
+ for (pdu = smb2->waitqueue; pdu; pdu = pdu->next) {
772
+ if (pdu->header.message_id == message_id) {
773
+ break;
774
+ }
775
+ }
776
+ return pdu;
777
+ }
778
+
779
+ static int
780
+ smb2_is_error_response(struct smb2_context *smb2,
781
+ struct smb2_pdu *pdu) {
782
+ if ((smb2->hdr.status & SMB2_STATUS_SEVERITY_MASK) ==
783
+ SMB2_STATUS_SEVERITY_ERROR) {
784
+ switch (smb2->hdr.status) {
785
+ case SMB2_STATUS_MORE_PROCESSING_REQUIRED:
786
+ return 0;
787
+ default:
788
+ return 1;
789
+ }
790
+ } else if ((smb2->hdr.status & SMB2_STATUS_SEVERITY_MASK) ==
791
+ SMB2_STATUS_SEVERITY_WARNING) {
792
+ switch(smb2->hdr.status) {
793
+ case SMB2_STATUS_STOPPED_ON_SYMLINK:
794
+ return 1;
795
+ default:
796
+ return 0;
797
+ }
798
+ }
799
+ return 0;
800
+ }
801
+
802
+ int
803
+ smb2_get_fixed_reply_size(struct smb2_context *smb2, struct smb2_pdu *pdu)
804
+ {
805
+ if (smb2_is_error_response(smb2, pdu)) {
806
+ return SMB2_ERROR_REPLY_SIZE & 0xfffe;
807
+ }
808
+
809
+ switch (pdu->header.command) {
810
+ case SMB2_NEGOTIATE:
811
+ return SMB2_NEGOTIATE_REPLY_SIZE;
812
+ case SMB2_SESSION_SETUP:
813
+ return SMB2_SESSION_SETUP_REPLY_SIZE;
814
+ case SMB2_LOGOFF:
815
+ return SMB2_LOGOFF_REPLY_SIZE;
816
+ case SMB2_TREE_CONNECT:
817
+ return SMB2_TREE_CONNECT_REPLY_SIZE;
818
+ case SMB2_TREE_DISCONNECT:
819
+ return SMB2_TREE_DISCONNECT_REPLY_SIZE;
820
+ case SMB2_CREATE:
821
+ return SMB2_CREATE_REPLY_SIZE;
822
+ case SMB2_CLOSE:
823
+ return SMB2_CLOSE_REPLY_SIZE;
824
+ case SMB2_FLUSH:
825
+ return SMB2_FLUSH_REPLY_SIZE;
826
+ case SMB2_READ:
827
+ return SMB2_READ_REPLY_SIZE;
828
+ case SMB2_WRITE:
829
+ return SMB2_WRITE_REPLY_SIZE;
830
+ case SMB2_LOCK:
831
+ return SMB2_LOCK_REPLY_SIZE;
832
+ case SMB2_ECHO:
833
+ return SMB2_ECHO_REPLY_SIZE;
834
+ case SMB2_QUERY_DIRECTORY:
835
+ return SMB2_QUERY_DIRECTORY_REPLY_SIZE;
836
+ case SMB2_CHANGE_NOTIFY:
837
+ return SMB2_CHANGE_NOTIFY_REPLY_SIZE;
838
+ case SMB2_QUERY_INFO:
839
+ return SMB2_QUERY_INFO_REPLY_SIZE;
840
+ case SMB2_SET_INFO:
841
+ return SMB2_SET_INFO_REPLY_SIZE;
842
+ case SMB2_IOCTL:
843
+ return SMB2_IOCTL_REPLY_SIZE;
844
+ case SMB2_OPLOCK_BREAK:
845
+ /* need to read the struct size to see what
846
+ * type (oplock or lease) the pdu is */
847
+ return sizeof(uint16_t);
848
+ }
849
+ return -1;
850
+ }
851
+
852
+ int
853
+ smb2_get_fixed_request_size(struct smb2_context *smb2, struct smb2_pdu *pdu)
854
+ {
855
+ switch (pdu->header.command) {
856
+ case SMB2_NEGOTIATE:
857
+ return SMB2_NEGOTIATE_REQUEST_SIZE;
858
+ case SMB2_SESSION_SETUP:
859
+ return SMB2_SESSION_SETUP_REQUEST_SIZE;
860
+ case SMB2_LOGOFF:
861
+ return SMB2_LOGOFF_REQUEST_SIZE;
862
+ case SMB2_TREE_CONNECT:
863
+ return SMB2_TREE_CONNECT_REQUEST_SIZE;
864
+ case SMB2_TREE_DISCONNECT:
865
+ return SMB2_TREE_DISCONNECT_REQUEST_SIZE;
866
+ case SMB2_CREATE:
867
+ return SMB2_CREATE_REQUEST_SIZE;
868
+ case SMB2_CLOSE:
869
+ return SMB2_CLOSE_REQUEST_SIZE;
870
+ case SMB2_FLUSH:
871
+ return SMB2_FLUSH_REQUEST_SIZE;
872
+ case SMB2_READ:
873
+ return SMB2_READ_REQUEST_SIZE;
874
+ case SMB2_WRITE:
875
+ return SMB2_WRITE_REQUEST_SIZE;
876
+ case SMB2_LOCK:
877
+ return SMB2_LOCK_REQUEST_SIZE;
878
+ case SMB2_CANCEL:
879
+ return SMB2_CANCEL_REQUEST_SIZE;
880
+ case SMB2_ECHO:
881
+ return SMB2_ECHO_REQUEST_SIZE;
882
+ case SMB2_QUERY_DIRECTORY:
883
+ return SMB2_QUERY_DIRECTORY_REQUEST_SIZE;
884
+ case SMB2_CHANGE_NOTIFY:
885
+ return SMB2_CHANGE_NOTIFY_REQUEST_SIZE;
886
+ case SMB2_QUERY_INFO:
887
+ return SMB2_QUERY_INFO_REQUEST_SIZE;
888
+ case SMB2_SET_INFO:
889
+ return SMB2_SET_INFO_REQUEST_SIZE;
890
+ case SMB2_IOCTL:
891
+ return SMB2_IOCTL_REQUEST_SIZE;
892
+ case SMB2_OPLOCK_BREAK:
893
+ /* need to read the struct size to see what
894
+ * type (oplock or lease) the pdu is */
895
+ return sizeof(uint16_t);
896
+ }
897
+ return -1;
898
+ }
899
+
900
+ int
901
+ smb2_get_fixed_size(struct smb2_context *smb2, struct smb2_pdu *pdu)
902
+ {
903
+ if (smb2_is_server(smb2)) {
904
+ return smb2_get_fixed_request_size(smb2, pdu);
905
+ }
906
+ else {
907
+ return smb2_get_fixed_reply_size(smb2, pdu);
908
+ }
909
+ }
910
+
911
+ int
912
+ smb2_process_reply_payload_fixed(struct smb2_context *smb2, struct smb2_pdu *pdu)
913
+ {
914
+ if (smb2_is_error_response(smb2, pdu)) {
915
+ return smb2_process_error_fixed(smb2, pdu);
916
+ }
917
+
918
+ switch (pdu->header.command) {
919
+ case SMB2_NEGOTIATE:
920
+ return smb2_process_negotiate_fixed(smb2, pdu);
921
+ case SMB2_SESSION_SETUP:
922
+ return smb2_process_session_setup_fixed(smb2, pdu);
923
+ case SMB2_LOGOFF:
924
+ return smb2_process_logoff_fixed(smb2, pdu);
925
+ case SMB2_TREE_CONNECT:
926
+ return smb2_process_tree_connect_fixed(smb2, pdu);
927
+ case SMB2_TREE_DISCONNECT:
928
+ return smb2_process_tree_disconnect_fixed(smb2, pdu);
929
+ case SMB2_CREATE:
930
+ return smb2_process_create_fixed(smb2, pdu);
931
+ case SMB2_CLOSE:
932
+ return smb2_process_close_fixed(smb2, pdu);
933
+ case SMB2_FLUSH:
934
+ return smb2_process_flush_fixed(smb2, pdu);
935
+ case SMB2_READ:
936
+ return smb2_process_read_fixed(smb2, pdu);
937
+ case SMB2_WRITE:
938
+ return smb2_process_write_fixed(smb2, pdu);
939
+ case SMB2_ECHO:
940
+ return smb2_process_echo_fixed(smb2, pdu);
941
+ case SMB2_LOCK:
942
+ return smb2_process_lock_fixed(smb2, pdu);
943
+ case SMB2_QUERY_DIRECTORY:
944
+ return smb2_process_query_directory_fixed(smb2, pdu);
945
+ case SMB2_CHANGE_NOTIFY:
946
+ return smb2_process_change_notify_fixed(smb2, pdu);
947
+ case SMB2_QUERY_INFO:
948
+ return smb2_process_query_info_fixed(smb2, pdu);
949
+ case SMB2_SET_INFO:
950
+ return smb2_process_set_info_fixed(smb2, pdu);
951
+ case SMB2_IOCTL:
952
+ return smb2_process_ioctl_fixed(smb2, pdu);
953
+ case SMB2_OPLOCK_BREAK:
954
+ /* notice that op/lease lock breaks can be notification or response here */
955
+ return smb2_process_oplock_break_fixed(smb2, pdu);
956
+ }
957
+ return 0;
958
+ }
959
+
960
+ int
961
+ smb2_process_reply_payload_variable(struct smb2_context *smb2, struct smb2_pdu *pdu)
962
+ {
963
+ if (smb2_is_error_response(smb2, pdu)) {
964
+ return smb2_process_error_variable(smb2, pdu);
965
+ }
966
+
967
+ switch (pdu->header.command) {
968
+ case SMB2_NEGOTIATE:
969
+ return smb2_process_negotiate_variable(smb2, pdu);
970
+ case SMB2_SESSION_SETUP:
971
+ return smb2_process_session_setup_variable(smb2, pdu);
972
+ case SMB2_LOGOFF:
973
+ return 0;
974
+ case SMB2_TREE_CONNECT:
975
+ return 0;
976
+ case SMB2_TREE_DISCONNECT:
977
+ return 0;
978
+ case SMB2_CREATE:
979
+ return smb2_process_create_variable(smb2, pdu);
980
+ case SMB2_CLOSE:
981
+ return 0;
982
+ case SMB2_FLUSH:
983
+ return 0;
984
+ case SMB2_READ:
985
+ return smb2_process_read_variable(smb2, pdu);
986
+ case SMB2_WRITE:
987
+ return 0;
988
+ case SMB2_ECHO:
989
+ return 0;
990
+ case SMB2_LOCK:
991
+ return 0;
992
+ case SMB2_CANCEL:
993
+ return 0;
994
+ case SMB2_QUERY_DIRECTORY:
995
+ return smb2_process_query_directory_variable(smb2, pdu);
996
+ case SMB2_CHANGE_NOTIFY:
997
+ return smb2_process_change_notify_variable(smb2, pdu);
998
+ case SMB2_QUERY_INFO:
999
+ return smb2_process_query_info_variable(smb2, pdu);
1000
+ case SMB2_SET_INFO:
1001
+ return 0;
1002
+ case SMB2_IOCTL:
1003
+ return smb2_process_ioctl_variable(smb2, pdu);
1004
+ case SMB2_OPLOCK_BREAK:
1005
+ return smb2_process_oplock_break_variable(smb2, pdu);
1006
+ }
1007
+ return 0;
1008
+ }
1009
+
1010
+ int
1011
+ smb2_process_request_payload_fixed(struct smb2_context *smb2, struct smb2_pdu *pdu)
1012
+ {
1013
+ switch (pdu->header.command) {
1014
+ case SMB2_NEGOTIATE:
1015
+ return smb2_process_negotiate_request_fixed(smb2, pdu);
1016
+ case SMB2_SESSION_SETUP:
1017
+ return smb2_process_session_setup_request_fixed(smb2, pdu);
1018
+ case SMB2_LOGOFF:
1019
+ return smb2_process_logoff_request_fixed(smb2, pdu);
1020
+ case SMB2_TREE_CONNECT:
1021
+ return smb2_process_tree_connect_request_fixed(smb2, pdu);
1022
+ case SMB2_TREE_DISCONNECT:
1023
+ return 0;
1024
+ case SMB2_CREATE:
1025
+ return smb2_process_create_request_fixed(smb2, pdu);
1026
+ case SMB2_CLOSE:
1027
+ return smb2_process_close_request_fixed(smb2, pdu);
1028
+ case SMB2_FLUSH:
1029
+ return smb2_process_flush_request_fixed(smb2, pdu);
1030
+ case SMB2_READ:
1031
+ return smb2_process_read_request_fixed(smb2, pdu);
1032
+ case SMB2_WRITE:
1033
+ return smb2_process_write_request_fixed(smb2, pdu);
1034
+ case SMB2_ECHO:
1035
+ return smb2_process_echo_request_fixed(smb2, pdu);
1036
+ case SMB2_LOCK:
1037
+ return smb2_process_lock_request_fixed(smb2, pdu);
1038
+ case SMB2_CANCEL:
1039
+ return 0;
1040
+ case SMB2_QUERY_DIRECTORY:
1041
+ return smb2_process_query_directory_request_fixed(smb2, pdu);
1042
+ case SMB2_CHANGE_NOTIFY:
1043
+ return smb2_process_change_notify_request_fixed(smb2, pdu);
1044
+ case SMB2_QUERY_INFO:
1045
+ return smb2_process_query_info_request_fixed(smb2, pdu);
1046
+ case SMB2_SET_INFO:
1047
+ return smb2_process_set_info_request_fixed(smb2, pdu);
1048
+ case SMB2_IOCTL:
1049
+ return smb2_process_ioctl_request_fixed(smb2, pdu);
1050
+ case SMB2_OPLOCK_BREAK:
1051
+ /* note oplock/lease break from a client is an acknowlegement here */
1052
+ return smb2_process_oplock_break_request_fixed(smb2, pdu);
1053
+ default:
1054
+ smb2_set_error(smb2, "No handler for fixed request");
1055
+ return -1;
1056
+ }
1057
+ return 0;
1058
+ }
1059
+
1060
+ int
1061
+ smb2_process_request_payload_variable(struct smb2_context *smb2, struct smb2_pdu *pdu)
1062
+ {
1063
+ switch (pdu->header.command) {
1064
+ case SMB2_NEGOTIATE:
1065
+ return smb2_process_negotiate_request_variable(smb2, pdu);
1066
+ case SMB2_SESSION_SETUP:
1067
+ return smb2_process_session_setup_request_variable(smb2, pdu);
1068
+ case SMB2_LOGOFF:
1069
+ return 0;
1070
+ case SMB2_TREE_CONNECT:
1071
+ return smb2_process_tree_connect_request_variable(smb2, pdu);
1072
+ case SMB2_TREE_DISCONNECT:
1073
+ return 0;
1074
+ case SMB2_CREATE:
1075
+ return smb2_process_create_request_variable(smb2, pdu);
1076
+ case SMB2_CLOSE:
1077
+ return 0;
1078
+ case SMB2_FLUSH:
1079
+ return 0;
1080
+ case SMB2_READ:
1081
+ return smb2_process_read_request_variable(smb2, pdu);
1082
+ case SMB2_WRITE:
1083
+ return smb2_process_write_request_variable(smb2, pdu);
1084
+ case SMB2_LOCK:
1085
+ return smb2_process_lock_request_variable(smb2, pdu);
1086
+ case SMB2_CANCEL:
1087
+ return 0;
1088
+ case SMB2_ECHO:
1089
+ return 0;
1090
+ case SMB2_QUERY_DIRECTORY:
1091
+ return smb2_process_query_directory_request_variable(smb2, pdu);
1092
+ case SMB2_CHANGE_NOTIFY:
1093
+ return 0;
1094
+ case SMB2_QUERY_INFO:
1095
+ return smb2_process_query_info_request_variable(smb2, pdu);
1096
+ case SMB2_SET_INFO:
1097
+ return smb2_process_set_info_request_variable(smb2, pdu);
1098
+ case SMB2_IOCTL:
1099
+ return smb2_process_ioctl_request_variable(smb2, pdu);
1100
+ case SMB2_OPLOCK_BREAK:
1101
+ return smb2_process_oplock_break_request_variable(smb2, pdu);
1102
+ default:
1103
+ smb2_set_error(smb2, "No handler for var request");
1104
+ }
1105
+ return -1;
1106
+ }
1107
+
1108
+ int
1109
+ smb2_process_payload_fixed(struct smb2_context *smb2, struct smb2_pdu *pdu)
1110
+ {
1111
+ if (smb2_is_server(smb2)) {
1112
+ return smb2_process_request_payload_fixed(smb2, pdu);
1113
+ }
1114
+ else {
1115
+ return smb2_process_reply_payload_fixed(smb2, pdu);
1116
+ }
1117
+ }
1118
+
1119
+ int
1120
+ smb2_process_payload_variable(struct smb2_context *smb2, struct smb2_pdu *pdu)
1121
+ {
1122
+ if (smb2_is_server(smb2)) {
1123
+ return smb2_process_request_payload_variable(smb2, pdu);
1124
+ }
1125
+ else {
1126
+ return smb2_process_reply_payload_variable(smb2, pdu);
1127
+ }
1128
+ }
1129
+
1130
+ void smb2_timeout_pdus(struct smb2_context *smb2)
1131
+ {
1132
+ struct smb2_pdu *pdu, *next;
1133
+ time_t t = time(NULL);
1134
+
1135
+ pdu = smb2->outqueue;
1136
+ while (pdu) {
1137
+ next = pdu->next;
1138
+ if (pdu->timeout && pdu->timeout < t) {
1139
+ SMB2_LIST_REMOVE(&smb2->outqueue, pdu);
1140
+ pdu->cb(smb2, SMB2_STATUS_IO_TIMEOUT, NULL,
1141
+ pdu->cb_data);
1142
+ smb2_free_pdu(smb2, pdu);
1143
+ }
1144
+ pdu = next;
1145
+ }
1146
+
1147
+ pdu = smb2->waitqueue;
1148
+ while (pdu) {
1149
+ next = pdu->next;
1150
+ if (pdu->timeout && pdu->timeout < t) {
1151
+ SMB2_LIST_REMOVE(&smb2->waitqueue, pdu);
1152
+ pdu->cb(smb2, SMB2_STATUS_IO_TIMEOUT, NULL,
1153
+ pdu->cb_data);
1154
+ smb2_free_pdu(smb2, pdu);
1155
+ }
1156
+ pdu = next;
1157
+ }
1158
+ }
1159
+