@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.
- package/README.md +54 -3
- package/darwin_arm64/libsmb2.1.dylib +0 -0
- package/darwin_arm64/libsmb2.6.1.0.dylib +0 -0
- package/darwin_arm64/libsmb2.dylib +0 -0
- package/darwin_arm64/smb_server_cpp_darwin_arm64 +0 -0
- package/darwin_arm64/third-party/libsmb2/COPYING +24 -0
- package/darwin_arm64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
- package/darwin_arm64/third-party/libsmb2/NOTICE.txt +13 -0
- package/darwin_arm64/third-party/libsmb2/README +413 -0
- package/darwin_arm64/third-party/libsmb2/source/CMakeLists.txt +205 -0
- package/darwin_arm64/third-party/libsmb2/source/COPYING +24 -0
- package/darwin_arm64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
- package/darwin_arm64/third-party/libsmb2/source/Makefile.am +15 -0
- package/darwin_arm64/third-party/libsmb2/source/Makefile.platform +112 -0
- package/darwin_arm64/third-party/libsmb2/source/README +413 -0
- package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
- package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
- package/darwin_arm64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
- package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
- package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
- package/darwin_arm64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
- package/darwin_arm64/third-party/libsmb2/source/bootstrap +2 -0
- package/darwin_arm64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
- package/darwin_arm64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
- package/darwin_arm64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
- package/darwin_arm64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
- package/darwin_arm64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
- package/darwin_arm64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
- package/darwin_arm64/third-party/libsmb2/source/component.mk +5 -0
- package/darwin_arm64/third-party/libsmb2/source/configure.ac +184 -0
- package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
- package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
- package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
- package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
- package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
- package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
- package/darwin_arm64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/Makefile.am +54 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/picow/README.md +2 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
- package/darwin_arm64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
- package/darwin_arm64/third-party/libsmb2/source/idf_component.yml +5 -0
- package/darwin_arm64/third-party/libsmb2/source/include/Makefile.am +15 -0
- package/darwin_arm64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
- package/darwin_arm64/third-party/libsmb2/source/include/apple/config.h +139 -0
- package/darwin_arm64/third-party/libsmb2/source/include/asprintf.h +65 -0
- package/darwin_arm64/third-party/libsmb2/source/include/esp/config.h +139 -0
- package/darwin_arm64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
- package/darwin_arm64/third-party/libsmb2/source/include/module.modulemap +21 -0
- package/darwin_arm64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
- package/darwin_arm64/third-party/libsmb2/source/include/picow/README.md +2 -0
- package/darwin_arm64/third-party/libsmb2/source/include/picow/config.h +139 -0
- package/darwin_arm64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
- package/darwin_arm64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
- package/darwin_arm64/third-party/libsmb2/source/include/portable-endian.h +377 -0
- package/darwin_arm64/third-party/libsmb2/source/include/ps3/config.h +139 -0
- package/darwin_arm64/third-party/libsmb2/source/include/slist.h +63 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
- package/darwin_arm64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
- package/darwin_arm64/third-party/libsmb2/source/include/xbox/config.h +139 -0
- package/darwin_arm64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/Makefile.am +85 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes.c +33 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes.h +29 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/alloc.c +154 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/compat.c +599 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/compat.h +829 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/errors.c +1192 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/hmac.c +245 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/init.c +778 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/md4.h +43 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/md4c.c +289 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/md5.c +249 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/md5.h +76 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/pdu.c +1159 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/sha-private.h +28 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/sha.h +334 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/sha1.c +450 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/socket.c +1502 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/sync.c +988 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/timestamps.c +70 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/unicode.c +307 -0
- package/darwin_arm64/third-party/libsmb2/source/lib/usha.c +345 -0
- package/darwin_arm64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
- package/darwin_arm64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
- package/darwin_arm64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/Makefile.am +34 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/README +28 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/functions.sh +11 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
- package/darwin_arm64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
- package/darwin_arm64/third-party/libsmb2/source/utils/Makefile.am +11 -0
- package/darwin_arm64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
- package/darwin_arm64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
- package/linux_x64/libsmb2.so +0 -0
- package/linux_x64/libsmb2.so.1 +0 -0
- package/linux_x64/libsmb2.so.6.1.0 +0 -0
- package/linux_x64/smb_server_cpp_linux_x64 +0 -0
- package/linux_x64/third-party/libsmb2/COPYING +24 -0
- package/linux_x64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
- package/linux_x64/third-party/libsmb2/NOTICE.txt +13 -0
- package/linux_x64/third-party/libsmb2/README +413 -0
- package/linux_x64/third-party/libsmb2/source/CMakeLists.txt +205 -0
- package/linux_x64/third-party/libsmb2/source/COPYING +24 -0
- package/linux_x64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
- package/linux_x64/third-party/libsmb2/source/Makefile.am +15 -0
- package/linux_x64/third-party/libsmb2/source/Makefile.platform +112 -0
- package/linux_x64/third-party/libsmb2/source/README +413 -0
- package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
- package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
- package/linux_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
- package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
- package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
- package/linux_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
- package/linux_x64/third-party/libsmb2/source/bootstrap +2 -0
- package/linux_x64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
- package/linux_x64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
- package/linux_x64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
- package/linux_x64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
- package/linux_x64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
- package/linux_x64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
- package/linux_x64/third-party/libsmb2/source/component.mk +5 -0
- package/linux_x64/third-party/libsmb2/source/configure.ac +184 -0
- package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
- package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
- package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
- package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
- package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
- package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
- package/linux_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
- package/linux_x64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
- package/linux_x64/third-party/libsmb2/source/examples/Makefile.am +54 -0
- package/linux_x64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
- package/linux_x64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
- package/linux_x64/third-party/libsmb2/source/examples/picow/README.md +2 -0
- package/linux_x64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
- package/linux_x64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
- package/linux_x64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
- package/linux_x64/third-party/libsmb2/source/idf_component.yml +5 -0
- package/linux_x64/third-party/libsmb2/source/include/Makefile.am +15 -0
- package/linux_x64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
- package/linux_x64/third-party/libsmb2/source/include/apple/config.h +139 -0
- package/linux_x64/third-party/libsmb2/source/include/asprintf.h +65 -0
- package/linux_x64/third-party/libsmb2/source/include/esp/config.h +139 -0
- package/linux_x64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
- package/linux_x64/third-party/libsmb2/source/include/module.modulemap +21 -0
- package/linux_x64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
- package/linux_x64/third-party/libsmb2/source/include/picow/README.md +2 -0
- package/linux_x64/third-party/libsmb2/source/include/picow/config.h +139 -0
- package/linux_x64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
- package/linux_x64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
- package/linux_x64/third-party/libsmb2/source/include/portable-endian.h +377 -0
- package/linux_x64/third-party/libsmb2/source/include/ps3/config.h +139 -0
- package/linux_x64/third-party/libsmb2/source/include/slist.h +63 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
- package/linux_x64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
- package/linux_x64/third-party/libsmb2/source/include/xbox/config.h +139 -0
- package/linux_x64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
- package/linux_x64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
- package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
- package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
- package/linux_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
- package/linux_x64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
- package/linux_x64/third-party/libsmb2/source/lib/Makefile.am +85 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes.c +33 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes.h +29 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
- package/linux_x64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
- package/linux_x64/third-party/libsmb2/source/lib/alloc.c +154 -0
- package/linux_x64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
- package/linux_x64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
- package/linux_x64/third-party/libsmb2/source/lib/compat.c +599 -0
- package/linux_x64/third-party/libsmb2/source/lib/compat.h +829 -0
- package/linux_x64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
- package/linux_x64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
- package/linux_x64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
- package/linux_x64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
- package/linux_x64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
- package/linux_x64/third-party/libsmb2/source/lib/errors.c +1192 -0
- package/linux_x64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
- package/linux_x64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
- package/linux_x64/third-party/libsmb2/source/lib/hmac.c +245 -0
- package/linux_x64/third-party/libsmb2/source/lib/init.c +778 -0
- package/linux_x64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
- package/linux_x64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
- package/linux_x64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
- package/linux_x64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
- package/linux_x64/third-party/libsmb2/source/lib/md4.h +43 -0
- package/linux_x64/third-party/libsmb2/source/lib/md4c.c +289 -0
- package/linux_x64/third-party/libsmb2/source/lib/md5.c +249 -0
- package/linux_x64/third-party/libsmb2/source/lib/md5.h +76 -0
- package/linux_x64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
- package/linux_x64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
- package/linux_x64/third-party/libsmb2/source/lib/pdu.c +1159 -0
- package/linux_x64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
- package/linux_x64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
- package/linux_x64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
- package/linux_x64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
- package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
- package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
- package/linux_x64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
- package/linux_x64/third-party/libsmb2/source/lib/sha-private.h +28 -0
- package/linux_x64/third-party/libsmb2/source/lib/sha.h +334 -0
- package/linux_x64/third-party/libsmb2/source/lib/sha1.c +450 -0
- package/linux_x64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
- package/linux_x64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
- package/linux_x64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
- package/linux_x64/third-party/libsmb2/source/lib/socket.c +1502 -0
- package/linux_x64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
- package/linux_x64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
- package/linux_x64/third-party/libsmb2/source/lib/sync.c +988 -0
- package/linux_x64/third-party/libsmb2/source/lib/timestamps.c +70 -0
- package/linux_x64/third-party/libsmb2/source/lib/unicode.c +307 -0
- package/linux_x64/third-party/libsmb2/source/lib/usha.c +345 -0
- package/linux_x64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
- package/linux_x64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
- package/linux_x64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
- package/linux_x64/third-party/libsmb2/source/tests/Makefile.am +34 -0
- package/linux_x64/third-party/libsmb2/source/tests/README +28 -0
- package/linux_x64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
- package/linux_x64/third-party/libsmb2/source/tests/functions.sh +11 -0
- package/linux_x64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
- package/linux_x64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
- package/linux_x64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
- package/linux_x64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
- package/linux_x64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
- package/linux_x64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
- package/linux_x64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
- package/linux_x64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
- package/linux_x64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
- package/linux_x64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
- package/linux_x64/third-party/libsmb2/source/utils/Makefile.am +11 -0
- package/linux_x64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
- package/linux_x64/third-party/libsmb2/source/utils/smb2-ls.c +135 -0
- package/package.json +10 -4
- package/smb2.proto +164 -0
- package/win32_x64/smb2.dll +0 -0
- package/win32_x64/smb_server_cpp_win32_x64.exe +0 -0
- package/win32_x64/third-party/libsmb2/COPYING +24 -0
- package/win32_x64/third-party/libsmb2/LICENCE-LGPL-2.1.txt +502 -0
- package/win32_x64/third-party/libsmb2/NOTICE.txt +13 -0
- package/win32_x64/third-party/libsmb2/README +413 -0
- package/win32_x64/third-party/libsmb2/source/CMakeLists.txt +205 -0
- package/win32_x64/third-party/libsmb2/source/COPYING +24 -0
- package/win32_x64/third-party/libsmb2/source/LICENCE-LGPL-2.1.txt +502 -0
- package/win32_x64/third-party/libsmb2/source/Makefile.am +15 -0
- package/win32_x64/third-party/libsmb2/source/Makefile.platform +112 -0
- package/win32_x64/third-party/libsmb2/source/README +413 -0
- package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.sln +25 -0
- package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj +248 -0
- package/win32_x64/third-party/libsmb2/source/Xbox/libsmb2.vcxproj.filters +304 -0
- package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.sln +32 -0
- package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj +327 -0
- package/win32_x64/third-party/libsmb2/source/Xbox 360/libsmb2.vcxproj.filters +268 -0
- package/win32_x64/third-party/libsmb2/source/bootstrap +2 -0
- package/win32_x64/third-party/libsmb2/source/cmake/ConfigureChecks.cmake +63 -0
- package/win32_x64/third-party/libsmb2/source/cmake/FindSMB2.cmake +37 -0
- package/win32_x64/third-party/libsmb2/source/cmake/Modules/FindGSSAPI.cmake +30 -0
- package/win32_x64/third-party/libsmb2/source/cmake/Modules/FindLibKrb5.cmake +44 -0
- package/win32_x64/third-party/libsmb2/source/cmake/config.h.cmake +126 -0
- package/win32_x64/third-party/libsmb2/source/cmake/libsmb2.pc.cmake +14 -0
- package/win32_x64/third-party/libsmb2/source/component.mk +5 -0
- package/win32_x64/third-party/libsmb2/source/configure.ac +184 -0
- package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareAdd.yaml +9 -0
- package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareCheck.yaml +4 -0
- package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDel.yaml +5 -0
- package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareDelSticky.yaml +5 -0
- package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareEnum.yaml +7 -0
- package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareGetInfo.yaml +6 -0
- package/win32_x64/third-party/libsmb2/source/dcerpc-examples/srvsvc-NetrShareSetInfo.yaml +11 -0
- package/win32_x64/third-party/libsmb2/source/examples/CMakeLists.txt +28 -0
- package/win32_x64/third-party/libsmb2/source/examples/Makefile.am +54 -0
- package/win32_x64/third-party/libsmb2/source/examples/dcerpc.c +254 -0
- package/win32_x64/third-party/libsmb2/source/examples/picow/CMakeLists.txt +72 -0
- package/win32_x64/third-party/libsmb2/source/examples/picow/README.md +2 -0
- package/win32_x64/third-party/libsmb2/source/examples/picow/main.cpp +119 -0
- package/win32_x64/third-party/libsmb2/source/examples/picow/smb-ls-sync.c +0 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-CMD-FIND.c +335 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-cat-async.c +183 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-cat-sync.c +105 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-ftruncate-sync.c +87 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-ls-async.c +185 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-ls-epoll.c +234 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-lsa-lookupsids.c +292 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-lseek-sync.c +101 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-notify.c +183 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-put-async.c +175 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-put-sync.c +100 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-fsstat-async.c +353 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-getsd-async.c +401 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-raw-stat-async.c +448 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-readlink.c +80 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-rename-sync.c +80 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-server-sync.c +497 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-share-enum-sync.c +146 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-share-enum.c +208 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-share-info.c +255 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-stat-sync.c +103 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-statvfs-sync.c +85 -0
- package/win32_x64/third-party/libsmb2/source/examples/smb2-truncate-sync.c +78 -0
- package/win32_x64/third-party/libsmb2/source/idf_component.yml +5 -0
- package/win32_x64/third-party/libsmb2/source/include/Makefile.am +15 -0
- package/win32_x64/third-party/libsmb2/source/include/amiga_os/config.h +139 -0
- package/win32_x64/third-party/libsmb2/source/include/apple/config.h +139 -0
- package/win32_x64/third-party/libsmb2/source/include/asprintf.h +65 -0
- package/win32_x64/third-party/libsmb2/source/include/esp/config.h +139 -0
- package/win32_x64/third-party/libsmb2/source/include/libsmb2-private.h +670 -0
- package/win32_x64/third-party/libsmb2/source/include/module.modulemap +21 -0
- package/win32_x64/third-party/libsmb2/source/include/picow/FreeRTOSConfig.h +143 -0
- package/win32_x64/third-party/libsmb2/source/include/picow/README.md +2 -0
- package/win32_x64/third-party/libsmb2/source/include/picow/config.h +139 -0
- package/win32_x64/third-party/libsmb2/source/include/picow/lwipopts.h +27 -0
- package/win32_x64/third-party/libsmb2/source/include/picow/lwipopts_examples_common.h +90 -0
- package/win32_x64/third-party/libsmb2/source/include/portable-endian.h +377 -0
- package/win32_x64/third-party/libsmb2/source/include/ps3/config.h +139 -0
- package/win32_x64/third-party/libsmb2/source/include/slist.h +63 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-lsa.h +172 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc-srvsvc.h +276 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-dcerpc.h +203 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2-raw.h +497 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/libsmb2.h +1409 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/smb2-errors.h +549 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/smb2-ioctl.h +83 -0
- package/win32_x64/third-party/libsmb2/source/include/smb2/smb2.h +1251 -0
- package/win32_x64/third-party/libsmb2/source/include/xbox/config.h +139 -0
- package/win32_x64/third-party/libsmb2/source/include/xbox 360/config.h +139 -0
- package/win32_x64/third-party/libsmb2/source/lib/CMakeLists.txt +260 -0
- package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA +46 -0
- package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_AROS +59 -0
- package/win32_x64/third-party/libsmb2/source/lib/Makefile.AMIGA_OS3 +59 -0
- package/win32_x64/third-party/libsmb2/source/lib/Makefile.PS3_PPU +100 -0
- package/win32_x64/third-party/libsmb2/source/lib/Makefile.am +85 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes.c +33 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes.h +29 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes128ccm.c +185 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes128ccm.h +28 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes_apple.c +70 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes_apple.h +34 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes_reference.c +560 -0
- package/win32_x64/third-party/libsmb2/source/lib/aes_reference.h +49 -0
- package/win32_x64/third-party/libsmb2/source/lib/alloc.c +154 -0
- package/win32_x64/third-party/libsmb2/source/lib/asn1-ber.c +1078 -0
- package/win32_x64/third-party/libsmb2/source/lib/asn1-ber.h +161 -0
- package/win32_x64/third-party/libsmb2/source/lib/compat.c +599 -0
- package/win32_x64/third-party/libsmb2/source/lib/compat.h +829 -0
- package/win32_x64/third-party/libsmb2/source/lib/dcerpc-lsa.c +641 -0
- package/win32_x64/third-party/libsmb2/source/lib/dcerpc-srvsvc.c +885 -0
- package/win32_x64/third-party/libsmb2/source/lib/dcerpc.c +2513 -0
- package/win32_x64/third-party/libsmb2/source/lib/dreamcast/vfs.c +328 -0
- package/win32_x64/third-party/libsmb2/source/lib/dreamcast/vfs.h +15 -0
- package/win32_x64/third-party/libsmb2/source/lib/errors.c +1192 -0
- package/win32_x64/third-party/libsmb2/source/lib/hmac-md5.c +84 -0
- package/win32_x64/third-party/libsmb2/source/lib/hmac-md5.h +42 -0
- package/win32_x64/third-party/libsmb2/source/lib/hmac.c +245 -0
- package/win32_x64/third-party/libsmb2/source/lib/init.c +778 -0
- package/win32_x64/third-party/libsmb2/source/lib/krb5-wrapper.c +1072 -0
- package/win32_x64/third-party/libsmb2/source/lib/krb5-wrapper.h +134 -0
- package/win32_x64/third-party/libsmb2/source/lib/libsmb2.c +4292 -0
- package/win32_x64/third-party/libsmb2/source/lib/libsmb2.syms +168 -0
- package/win32_x64/third-party/libsmb2/source/lib/md4.h +43 -0
- package/win32_x64/third-party/libsmb2/source/lib/md4c.c +289 -0
- package/win32_x64/third-party/libsmb2/source/lib/md5.c +249 -0
- package/win32_x64/third-party/libsmb2/source/lib/md5.h +76 -0
- package/win32_x64/third-party/libsmb2/source/lib/ntlmssp.c +1380 -0
- package/win32_x64/third-party/libsmb2/source/lib/ntlmssp.h +84 -0
- package/win32_x64/third-party/libsmb2/source/lib/pdu.c +1159 -0
- package/win32_x64/third-party/libsmb2/source/lib/ps2/TODO +6 -0
- package/win32_x64/third-party/libsmb2/source/lib/ps2/imports.lst +84 -0
- package/win32_x64/third-party/libsmb2/source/lib/ps2/irx_imports.h +28 -0
- package/win32_x64/third-party/libsmb2/source/lib/ps2/ps2smb2.h +35 -0
- package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.c +816 -0
- package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2_fio.h +15 -0
- package/win32_x64/third-party/libsmb2/source/lib/ps2/smb2man.c +69 -0
- package/win32_x64/third-party/libsmb2/source/lib/sha-private.h +28 -0
- package/win32_x64/third-party/libsmb2/source/lib/sha.h +334 -0
- package/win32_x64/third-party/libsmb2/source/lib/sha1.c +450 -0
- package/win32_x64/third-party/libsmb2/source/lib/sha224-256.c +611 -0
- package/win32_x64/third-party/libsmb2/source/lib/sha384-512.c +1059 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-close.c +240 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-create.c +508 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-echo.c +202 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-error.c +157 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-flush.c +207 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-ioctl.c +445 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-lock.c +312 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-logoff.c +190 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-negotiate.c +646 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-notify-change.c +278 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-oplock-break.c +543 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-query-directory.c +580 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-query-info.c +753 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-read.c +391 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-session-setup.c +331 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-set-info.c +361 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-connect.c +278 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-tree-disconnect.c +171 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-cmd-write.c +319 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-data-file-info.c +537 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-data-filesystem-info.c +384 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-data-reparse-point.c +117 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-data-security-descriptor.c +361 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-share-enum.c +181 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-signing.c +279 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb2-signing.h +51 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb3-seal.c +165 -0
- package/win32_x64/third-party/libsmb2/source/lib/smb3-seal.h +43 -0
- package/win32_x64/third-party/libsmb2/source/lib/socket.c +1502 -0
- package/win32_x64/third-party/libsmb2/source/lib/spnego-wrapper.c +634 -0
- package/win32_x64/third-party/libsmb2/source/lib/spnego-wrapper.h +74 -0
- package/win32_x64/third-party/libsmb2/source/lib/sync.c +988 -0
- package/win32_x64/third-party/libsmb2/source/lib/timestamps.c +70 -0
- package/win32_x64/third-party/libsmb2/source/lib/unicode.c +307 -0
- package/win32_x64/third-party/libsmb2/source/lib/usha.c +345 -0
- package/win32_x64/third-party/libsmb2/source/libsmb2.pc.in +14 -0
- package/win32_x64/third-party/libsmb2/source/packaging/RPM/libsmb2.spec.in +135 -0
- package/win32_x64/third-party/libsmb2/source/packaging/RPM/makerpms.sh +114 -0
- package/win32_x64/third-party/libsmb2/source/tests/Makefile.am +34 -0
- package/win32_x64/third-party/libsmb2/source/tests/README +28 -0
- package/win32_x64/third-party/libsmb2/source/tests/aes128ccm-test.c +119 -0
- package/win32_x64/third-party/libsmb2/source/tests/functions.sh +11 -0
- package/win32_x64/third-party/libsmb2/source/tests/ld_sockerr.c +58 -0
- package/win32_x64/third-party/libsmb2/source/tests/metastat-0202-censored.c +136 -0
- package/win32_x64/third-party/libsmb2/source/tests/ntlmssp_generate_blob.c +123 -0
- package/win32_x64/third-party/libsmb2/source/tests/prog_cat.c +188 -0
- package/win32_x64/third-party/libsmb2/source/tests/prog_cat_cancel.c +203 -0
- package/win32_x64/third-party/libsmb2/source/tests/prog_ls.c +189 -0
- package/win32_x64/third-party/libsmb2/source/tests/prog_mkdir.c +85 -0
- package/win32_x64/third-party/libsmb2/source/tests/prog_rmdir.c +84 -0
- package/win32_x64/third-party/libsmb2/source/tests/smb2-dcerpc-coder-test.c +635 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0100_ls_basic.sh +22 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0101_ls_basic_valgrind.sh +23 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0102_ls_basic_socket_error.sh +16 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0103_ls_basic_valgrind_malloc_error.sh +25 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0200_mkdir.sh +15 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0201_mkdir_valgrind.sh +15 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0210_cp_basic.sh +25 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0211_cp_valgrind.sh +26 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0212_cp_valgrind_socket_error.sh +29 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0300_cat_basic.sh +13 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0301_cat_valgrind.sh +13 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0302_cat_valgrind_socket_error.sh +18 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0310_cancel_pdu.sh +13 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_0400_overdrawn_0202.sh +25 -0
- package/win32_x64/third-party/libsmb2/source/tests/test_900_dcerpc.sh +10 -0
- package/win32_x64/third-party/libsmb2/source/utils/Makefile.am +11 -0
- package/win32_x64/third-party/libsmb2/source/utils/smb2-cp.c +265 -0
- 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
|
+
|