From 7f4ff828396dc5c60cad4804a350c2b810a4f6fc Mon Sep 17 00:00:00 2001 From: Felix Schumacher Date: Wed, 6 Aug 2008 16:43:12 +0200 Subject: [PATCH] jcifs-1.2.16 from tgz Mon Jul 16 13:26:26 EDT 2007 jcifs-1.2.15 released This release includes some significant changes. Most of these changes are related to NetApp compatibility. The changes in this release are: An SMB signing failure related to DFS has been fixed. The DCERPC bind did not exactly mimic Windows which uses SMB_COM_{WRITE,READ}_ANDX. We were using TransactNmPipe throughout which could result in an 'Incorrect function' error when querying the LSA on a NetApp server. JCIFS now implements the bind exactly like Windows to help ensure compatibility with other servers. Other changes related to NetApp compatibility include falling back to SamrConnect2 if an DCERPC_FAULT_OP_RNG_ERROR error occurs, more closely mimicing the SMB_COM_NT_CREATE_ANDX "extended" response, adjusting various RPC handle operation access masks, uncommenting some padding code that was commented out for what appeared to be a NetWare problem, disabling some logic to used port 139 if the jcifs.netbios.hostname was set and finally adding code to include LsarQosInfo structures in the MSRPC bind. Some new error code information has been added. Constants for common SIDs have been added to the SID class. The SID.getGroupMemberSids() method will now return an empty SID array if the SID is not of type SID_TYPE_DOM_GRP or SID_TYPE_ALIAS. A minor performance flaw in the DCERPC code was found and fixed. --- README.txt | 31 ++ build.xml | 4 +- examples/10883563.doc | 6 + examples/AclCrawler.class | Bin 0 -> 1544 bytes examples/AllocInfo.class | Bin 0 -> 546 bytes examples/Append.class | Bin 0 -> 1021 bytes examples/AuthListFiles.class | Bin 0 -> 1971 bytes examples/CallNamedPipe.class | Bin 0 -> 1431 bytes examples/CifsTime.java | 47 --- examples/CopyTo.class | Bin 0 -> 445 bytes examples/CountPerms.class | Bin 0 -> 2932 bytes examples/CreateFile.class | Bin 0 -> 425 bytes examples/Delete.class | Bin 0 -> 404 bytes examples/Equals.class | Bin 0 -> 636 bytes examples/Exists.class | Bin 0 -> 762 bytes examples/FileInfo.class | Bin 0 -> 4248 bytes examples/FileOps.class | Bin 0 -> 7889 bytes examples/FilterFiles$BigFileFilter.class | Bin 0 -> 502 bytes examples/FilterFiles$ShortFilenameFilter.class | Bin 0 -> 524 bytes examples/FilterFiles.class | Bin 0 -> 1325 bytes examples/Format.class | Bin 0 -> 8247 bytes examples/Get.class | Bin 0 -> 1313 bytes examples/GetDate.class | Bin 0 -> 831 bytes examples/GetDfsPath.class | Bin 0 -> 552 bytes examples/GetGroupMemberSidsFromURL.class | Bin 0 -> 1663 bytes examples/GetGroupMemberSidsFromURL.java | 34 ++ examples/GetSecurity.class | Bin 0 -> 651 bytes examples/GetShareSecurity.class | Bin 0 -> 801 bytes examples/GetType.class | Bin 0 -> 1590 bytes examples/GetURL.class | Bin 0 -> 784 bytes examples/GrowWrite.class | Bin 0 -> 1066 bytes examples/HttpURL.class | Bin 0 -> 633 bytes examples/Interleave$IThread.class | Bin 0 -> 940 bytes examples/Interleave.class | Bin 0 -> 990 bytes examples/InterruptTest.class | Bin 0 -> 1239 bytes examples/IsDir.class | Bin 0 -> 533 bytes examples/LargeListFiles.class | Bin 0 -> 1427 bytes examples/Length.class | Bin 0 -> 749 bytes examples/List.class | Bin 0 -> 977 bytes examples/ListACL.class | Bin 0 -> 1420 bytes examples/ListACL.java | 2 +- examples/ListFiles.class | Bin 0 -> 1016 bytes examples/ListTypes.class | Bin 0 -> 1366 bytes examples/Makefile | 2 +- examples/Mkdir.class | Bin 0 -> 395 bytes examples/NodeStatus.class | Bin 0 -> 598 bytes examples/OpenExclusive.class | Bin 0 -> 779 bytes examples/PeekNamedPipe$ReceiverThread.class | Bin 0 -> 1229 bytes examples/PeekNamedPipe.class | Bin 0 -> 1282 bytes examples/PipeTalk$ReceiverThread.class | Bin 0 -> 823 bytes examples/PipeTalk.class | Bin 0 -> 1391 bytes examples/Put.class | Bin 0 -> 1305 bytes examples/Query.class | Bin 0 -> 796 bytes examples/RenameTo.class | Bin 0 -> 451 bytes examples/SetAttrs.class | Bin 0 -> 760 bytes examples/SetTime.class | Bin 0 -> 479 bytes examples/SidCacheTest.class | Bin 0 -> 919 bytes examples/SidCrawler.class | Bin 0 -> 1932 bytes examples/SidLookup.class | Bin 0 -> 1338 bytes examples/SidLookup.java | 2 +- examples/SlowRead.class | Bin 0 -> 680 bytes examples/SlowWrite.class | Bin 0 -> 820 bytes examples/SmbCrawler.class | Bin 0 -> 1468 bytes examples/SmbShell.class | Bin 0 -> 4776 bytes examples/SmbTableFile.class | Bin 0 -> 2375 bytes examples/SmbTableFileRecord.class | Bin 0 -> 345 bytes examples/SmbThreadTest.class | Bin 0 -> 3481 bytes examples/T2Crawler$CrawlerThread.class | Bin 0 -> 1328 bytes examples/T2Crawler$Semaphore.class | Bin 0 -> 742 bytes examples/T2Crawler.class | Bin 0 -> 1540 bytes examples/TestRandomAccess$TestRecord.class | Bin 0 -> 2092 bytes examples/TestRandomAccess.class | Bin 0 -> 1885 bytes examples/TestSmbURL.class | Bin 0 -> 4023 bytes examples/TestUnicode.class | Bin 0 -> 1907 bytes examples/ThreadedNbtQuery$QThread.class | Bin 0 -> 985 bytes examples/ThreadedNbtQuery.class | Bin 0 -> 719 bytes examples/ThreadedSmbCrawler$DirEntry.class | Bin 0 -> 502 bytes examples/ThreadedSmbCrawler$SmbCrawlerThread.class | Bin 0 -> 2087 bytes examples/ThreadedSmbCrawler.class | Bin 0 -> 1909 bytes examples/ThreadedUniQuery$QThread.class | Bin 0 -> 1167 bytes examples/ThreadedUniQuery.class | Bin 0 -> 873 bytes examples/Torture1.class | Bin 0 -> 3005 bytes examples/Torture2.class | Bin 0 -> 3481 bytes examples/TortureTest5.class | Bin 0 -> 924 bytes examples/TransactNamedPipe.class | Bin 0 -> 1439 bytes examples/URLTest.class | Bin 0 -> 1616 bytes examples/VerifyGuest.class | Bin 0 -> 1442 bytes examples/VerifyIO.class | Bin 0 -> 2139 bytes examples/VerifyReads.class | Bin 0 -> 2215 bytes examples/Worker.class | Bin 0 -> 451 bytes examples/run1.sh | 15 +- examples/runtests.sh | 15 +- src/jcifs/UniAddress.java | 22 +- src/jcifs/dcerpc/DcerpcHandle.java | 19 +- src/jcifs/dcerpc/DcerpcPipeHandle.java | 23 +- src/jcifs/dcerpc/msrpc/MsrpcLsarOpenPolicy2.java | 6 + src/jcifs/dcerpc/msrpc/MsrpcSamrConnect2.java | 28 ++ src/jcifs/dcerpc/msrpc/MsrpcShareEnum.java | 42 +-- src/jcifs/dcerpc/msrpc/SamrPolicyHandle.java | 10 +- src/jcifs/dcerpc/msrpc/samr.idl | 5 + src/jcifs/dcerpc/msrpc/samr.java | 28 ++ src/jcifs/smb/.SmbConstants.java.swp | Bin 0 -> 16384 bytes src/jcifs/smb/AndXServerMessageBlock.java | 14 +- src/jcifs/smb/NetShareEnumResponse.java | 44 +-- src/jcifs/smb/NtStatus.java | 12 + src/jcifs/smb/NtlmPasswordAuthentication.java | 5 +- src/jcifs/smb/SID.java | 28 +- src/jcifs/smb/ServerMessageBlock.java | 1 + src/jcifs/smb/SigningDigest.java | 9 +- src/jcifs/smb/SmbComNTCreateAndX.java | 10 +- src/jcifs/smb/SmbComNTCreateAndXResponse.java | 1 + src/jcifs/smb/SmbComReadAndX.java | 6 +- src/jcifs/smb/SmbComTransaction.java | 3 +- src/jcifs/smb/SmbComWriteAndX.java | 25 +- src/jcifs/smb/SmbFile.java | 382 ++++++++++++++------- src/jcifs/smb/SmbFileInputStream.java | 6 +- src/jcifs/smb/SmbFileOutputStream.java | 37 +- src/jcifs/smb/SmbShareInfo.java | 74 ++++ src/jcifs/smb/SmbTransport.java | 2 +- src/jcifs/smb/SmbTree.java | 2 +- src/jcifs/smb/TransactNamedPipeOutputStream.java | 8 +- 121 files changed, 683 insertions(+), 327 deletions(-) create mode 100644 examples/10883563.doc create mode 100644 examples/AclCrawler.class create mode 100644 examples/AllocInfo.class create mode 100644 examples/Append.class create mode 100644 examples/AuthListFiles.class create mode 100644 examples/CallNamedPipe.class delete mode 100644 examples/CifsTime.java create mode 100644 examples/CopyTo.class create mode 100644 examples/CountPerms.class create mode 100644 examples/CreateFile.class create mode 100644 examples/Delete.class create mode 100644 examples/Equals.class create mode 100644 examples/Exists.class create mode 100644 examples/FileInfo.class create mode 100644 examples/FileOps.class create mode 100644 examples/FilterFiles$BigFileFilter.class create mode 100644 examples/FilterFiles$ShortFilenameFilter.class create mode 100644 examples/FilterFiles.class create mode 100644 examples/Format.class create mode 100644 examples/Get.class create mode 100644 examples/GetDate.class create mode 100644 examples/GetDfsPath.class create mode 100644 examples/GetGroupMemberSidsFromURL.class create mode 100644 examples/GetGroupMemberSidsFromURL.java create mode 100644 examples/GetSecurity.class create mode 100644 examples/GetShareSecurity.class create mode 100644 examples/GetType.class create mode 100644 examples/GetURL.class create mode 100644 examples/GrowWrite.class create mode 100644 examples/HttpURL.class create mode 100644 examples/Interleave$IThread.class create mode 100644 examples/Interleave.class create mode 100644 examples/InterruptTest.class create mode 100644 examples/IsDir.class create mode 100644 examples/LargeListFiles.class create mode 100644 examples/Length.class create mode 100644 examples/List.class create mode 100644 examples/ListACL.class create mode 100644 examples/ListFiles.class create mode 100644 examples/ListTypes.class create mode 100644 examples/Mkdir.class create mode 100644 examples/NodeStatus.class create mode 100644 examples/OpenExclusive.class create mode 100644 examples/PeekNamedPipe$ReceiverThread.class create mode 100644 examples/PeekNamedPipe.class create mode 100644 examples/PipeTalk$ReceiverThread.class create mode 100644 examples/PipeTalk.class create mode 100644 examples/Put.class create mode 100644 examples/Query.class create mode 100644 examples/RenameTo.class create mode 100644 examples/SetAttrs.class create mode 100644 examples/SetTime.class create mode 100644 examples/SidCacheTest.class create mode 100644 examples/SidCrawler.class create mode 100644 examples/SidLookup.class create mode 100644 examples/SlowRead.class create mode 100644 examples/SlowWrite.class create mode 100644 examples/SmbCrawler.class create mode 100644 examples/SmbShell.class create mode 100644 examples/SmbTableFile.class create mode 100644 examples/SmbTableFileRecord.class create mode 100644 examples/SmbThreadTest.class create mode 100644 examples/T2Crawler$CrawlerThread.class create mode 100644 examples/T2Crawler$Semaphore.class create mode 100644 examples/T2Crawler.class create mode 100644 examples/TestRandomAccess$TestRecord.class create mode 100644 examples/TestRandomAccess.class create mode 100644 examples/TestSmbURL.class create mode 100644 examples/TestUnicode.class create mode 100644 examples/ThreadedNbtQuery$QThread.class create mode 100644 examples/ThreadedNbtQuery.class create mode 100644 examples/ThreadedSmbCrawler$DirEntry.class create mode 100644 examples/ThreadedSmbCrawler$SmbCrawlerThread.class create mode 100644 examples/ThreadedSmbCrawler.class create mode 100644 examples/ThreadedUniQuery$QThread.class create mode 100644 examples/ThreadedUniQuery.class create mode 100644 examples/Torture1.class create mode 100644 examples/Torture2.class create mode 100644 examples/TortureTest5.class create mode 100644 examples/TransactNamedPipe.class create mode 100644 examples/URLTest.class create mode 100644 examples/VerifyGuest.class create mode 100644 examples/VerifyIO.class create mode 100644 examples/VerifyReads.class create mode 100644 examples/Worker.class create mode 100644 src/jcifs/dcerpc/msrpc/MsrpcSamrConnect2.java create mode 100644 src/jcifs/smb/.SmbConstants.java.swp create mode 100644 src/jcifs/smb/SmbShareInfo.java diff --git a/README.txt b/README.txt index d1e88e7..17bd96a 100644 --- a/README.txt +++ b/README.txt @@ -1,3 +1,34 @@ +Mon Jul 16 13:26:26 EDT 2007 +jcifs-1.2.15 released + +This release includes some significant changes. Most of these changes +are related to NetApp compatibility. The changes in this release are: + +An SMB signing failure related to DFS has been fixed. + +The DCERPC bind did not exactly mimic Windows which uses +SMB_COM_{WRITE,READ}_ANDX. We were using TransactNmPipe throughout which +could result in an 'Incorrect function' error when querying the LSA on +a NetApp server. JCIFS now implements the bind exactly like Windows to +help ensure compatibility with other servers. + +Other changes related to NetApp compatibility include falling back to +SamrConnect2 if an DCERPC_FAULT_OP_RNG_ERROR error occurs, more closely +mimicing the SMB_COM_NT_CREATE_ANDX "extended" response, adjusting various +RPC handle operation access masks, uncommenting some padding code that +was commented out for what appeared to be a NetWare problem, disabling +some logic to used port 139 if the jcifs.netbios.hostname was set and +finally adding code to include LsarQosInfo structures in the MSRPC bind. + +Some new error code information has been added. + +Constants for common SIDs have been added to the SID class. + +The SID.getGroupMemberSids() method will now return an empty SID array +if the SID is not of type SID_TYPE_DOM_GRP or SID_TYPE_ALIAS. + +A minor performance flaw in the DCERPC code was found and fixed. + Wed Jun 20 13:09:10 EDT 2007 jcifs-1.2.14 released diff --git a/build.xml b/build.xml index f047973..bbd3cc8 100644 --- a/build.xml +++ b/build.xml @@ -1,7 +1,7 @@ - - + + diff --git a/examples/10883563.doc b/examples/10883563.doc new file mode 100644 index 0000000..62644d9 --- /dev/null +++ b/examples/10883563.doc @@ -0,0 +1,6 @@ +C:\tmp>ktpass /princ HTTP/www.foo.net@WIN.NET /ptype KRB5_NT_PRINCIPAL /desonly /pass asj7j112233hh4455 /mapuser test2 +Targeting domain controller: ts0.win.net +Using legacy password setting method +Successfully mapped HTTP/www.foo.net to test2. +Key created. +Account test2 has been set for DES-only encryption. \ No newline at end of file diff --git a/examples/AclCrawler.class b/examples/AclCrawler.class new file mode 100644 index 0000000000000000000000000000000000000000..c12c07abcf5f4a857dd244f0fd5b5f2fe17ec42b GIT binary patch literal 1544 zcmZ`(OHUhD6#gzAd+cF&IdzBw0n+qgn}-upoCaJP7o60MffNG?ftHSk!5Q!a&5To` zN>!z1(^b}VQwdc?-BcoKOw>p$yXcQ<`i))eqNp0p+qo9~+CBBL z!f>}_q!he`Puz$ze$2Y&v_j#wf;;$BM#gpfOvYXJOjgF6fWM^e%^JJTBLR^S@FmT% z=}ZeqkxX=j%S>g{5a`O9Wn;ct${W^_mM>D{cP#C(VcFdFMzY(wxn;-gQa+w5YX=YjAd}J-Vtv%M_MXg+j=N!u{7p9^sG8P1sT%~I1h8u&h zDZMyjX4ifTPU#3ma|*c6@i{NNOTQMx4XsF zLVnxO9f5(ms%$v%Ijy)=u}a3~@?y4`+-b^ne*dHOMBJVRil*(j1lw*aqU^;R-8%!C zdty6ANx)O75<1jq9oe|YzB%lkp_Qgi5zndxR`_W+6#u0GxVxu zI!^?GXY)zTq#4><55hLJ5~YDMkEV3puMpNJqmp zc;-C`Y4lJ05|Tzw4)D`+NTVTXyasP$@lAR?317$;_R_jeYuFp|(JcSF`V(?U4hFv6 z$91j>*LFGu+iOrMcbv+d4Y})7?xsw?8hW1k#Nq3M23T+(oiTUYFKyOv?hwkPH|(t; z^i-nL`VkAffS+;5A5^2%EreN24~q)Iix3p_(j!cwE@GGzCeV)*|5JA{fE)>3Bbhp_ zJ0#L3S>KSF?-9ih^nJz?`xs&Tt3(*XuZZI}#`~Q=zX(x$q%cb40LdS2(8>Gjt&=?- zJMkW%>p9K`duzBLy+k-Bjlaaj8_8p^tZsZj%t;Rg##~A2iZLM|9WrVMLkMKq2cJkdyG z6viC0l-p6O>4{^h$k~10kGzxcHri5T6B!r`BXv*S##S7-mL0eXsSf5i=1nYM(Zmv# zIaW-pVvQlw)nFLzwQ%m%g_khodZlhB4Ef^!-To4=ALB#>iR4hmcgIa3?1tl!DSEKepL_q}8F)jneR?pxcv`Ar5uE-)jTFcV3|a>$o28x6 z-nY>Kd!m5Bq&59j)Cf3;EKwA62RcPS;T5T?4Q;yvt?~?gvyHws(mie#8lgCG`jIDv PATrzaSEfKP;GGr literal 0 HcmV?d00001 diff --git a/examples/Append.class b/examples/Append.class new file mode 100644 index 0000000000000000000000000000000000000000..584b1f0bb9f08f382465a0009eadf91b7b5def5a GIT binary patch literal 1021 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 G3yHs6ZCU34 literal 0 HcmV?d00001 diff --git a/examples/CifsTime.java b/examples/CifsTime.java deleted file mode 100644 index 0331b17..0000000 --- a/examples/CifsTime.java +++ /dev/null @@ -1,47 +0,0 @@ -import java.util.Date; -import java.util.TimeZone; - -public class CifsTime { - - // Observed dates reporting ServerTimeZone=240 - // file last modified date = { low, high }; - - // Mon Mar 26 23:14:42 EST 2001 (no DST) - static final int[] D = { 0x10BE3D00, 0x01C0B66C }; - - // Mon Apr 30 03:17:14 EST 2001 (in DST) - //static final int[] D = { 0x9474B900, 0x01C0D145 }; - - static final long MILLISECONDS_BETWEEN_1970_AND_1601 = 11644473600000L; - - static long calcDate() { - int lo, hi; - long t; - - t = ((long)D[1] << 32 ) | ( (long)D[0] & 0xFFFFFFFFL ); - t = ( t / 10000L - MILLISECONDS_BETWEEN_1970_AND_1601 ); - - if( TimeZone.getDefault().inDaylightTime( new Date() )) { - // in dst - - if( TimeZone.getDefault().inDaylightTime( new Date( t ))) { - // t was also generated in dst too so no correction - return t; - } - // t was not generated during dst so add 1 hour - return t + 3600000L; - } else { - // not in dst - - if( TimeZone.getDefault().inDaylightTime( new Date( t ))) { - // t was generated in dst so subtract 1 hour - return t - 3600000L; - } - // t was also not generated in dst so no correction - return t; - } - } - public static void main( String[] argv ) throws Exception { - System.out.println( new Date( calcDate() )); - } -} diff --git a/examples/CopyTo.class b/examples/CopyTo.class new file mode 100644 index 0000000000000000000000000000000000000000..1eec53621b9c646345d616c77e9c75d7cc68ba4b GIT binary patch literal 445 zcmZutO;3YB5Pb_26wrQI{HPwh(P~QKRbxyVJ)s_GOpGT$Y?c&gfExW-UTmU?KfoVl zoW(>Ay2;MWzMVJk?S6i}eE=AtuR}#!Lq~^%t_T|%dKxSS^@OLqJY|sW!3~2l&h8_I zrpwdlYLNs{KJkMYAxh%&l)43}UpRM49!sud_xivg1;qV)_4 xWXikmkZyax%ZrV z&$;`YedT|=_m{f>da)eBVVrA5KhCR2Yq+3cO2b7BpVaWIhEHjj)?jMLXvk{FX%HIn z8fG+H(qPGbvr=3Rp$7#iigId8QEEmRS5!D5bmCkH6}VEXYM7Jbb0N&*s)kR?U7wMY z&r0ocA#QzM?tejw7gf9@y+0p9H@=`^LHc|#1RuVn;mgwU6%Ak2@HGuz*YFJu-;`0m zrQzie$8U%59eh{C_vE49m*NL1eyBhzn)Ab=>|Ro!BssOK#b>O7s3>TqI&3*2>y{i# zE~s1>6|SkEZACk0xtESQS?&#&g;TUD6{}<)FI8=q?oCrXuWfyO%q+@N9+(=LHRsGk z!L(-*Dc7;=nE?gCLCdz>AqD4Z|Hs*@Em0+aG?IKc~7dgXySPU00E!#F`4Hb+pM)R`2`=e_Xxt3dR^bMAkUD6>_axZPQ6iJ7u zBd&NBZxXZYY@s)5vU=SOi;kNTs=d{UIV1X`>&+7#WYnSPAQ_mG3>?z&XCzhJ(y@fP zS3xq#>oa+=q>c%R-G&w$&&-mZ3ifzN*}_eXnuR>OMC8t%9$5oz6-tkC8&-WW+1t$p ztKzP3epjrU4A?>{1uZkeJ?fIJnW`&U%&lbihE!Jj*;lGEp-6*itlb0&?vm!hERyC% z1MesY&LAqc0As)qtS_sskx=qvvGQ$u@5! z^}LZh_eN6P8~L(%Bi{s$ety}FQ1EeT*APGx$7*~TN<19?YiJ2g9N&a5?KAwTwBHD% z(g7owN(T)!l~xTcmDY^rR5~0qLX@hpgHkhe%4Va5GGw$;?l9UYbt6pKVzg7X8U|&X z@jz+`JL8>8h%7R&f=^KHVj94sOfC!^21(~FRAfT*n^c0~B>c z>v)8FB3(Io*z0Jgzp=ne?U!lo zuQjrb$w{n+?*72$9O7Q^jzAp*p^?PC1;0{z@7+bhxf^fe9{kg+WYlmZx6eL;f;j#tn{du!olUtMWH`{*&eS zH_P@GOY=5&-NQKE!Gy9Chm?nq!Wbh4S+sFx0r}{y6z~|cklpug{0@532bOVALPrpM zhr47Q#=~t~*xAJ*_U48jUO_V<(ex3`|E}Y(>eeU&XH8wbb$rOH$G(Lo7H)Cf**HX$ z=o4G>*kEHUY1_Y@?TM9r(muVN!-pFVySKAF*|2r2+18uAAFV`TlC6H8wMet=FA%9I zR^}qB@htz&BZq0c2$T3{@FueO4_E#N;bH4%ZBL__NS|pS%l$t70rB|Vz;(3UM4#~# zJI;R_ABp=Pzm2B{@1Q^3xr~9)p16;99$e36kN1{Xtk^8`x=ixf=pX_2^1se*T-gv& L!CA&=!sPz}=AOTe literal 0 HcmV?d00001 diff --git a/examples/CreateFile.class b/examples/CreateFile.class new file mode 100644 index 0000000000000000000000000000000000000000..9ae7ab11a0b5817a43e89af2a332bbbbdde7e860 GIT binary patch literal 425 zcmZXQ%}T>S6otrHPesnKKN>k3qs;xS#TT;fJb}`Qls$ovYVaER`(s%Elh)u&B#e zTuU8xXQkk3Ev7o%g^dowD2e5B2l;=YBg+ zb$q^S2AzZN9d(iGB+evOn75OD+EMSd86H2l><7JU+f2F`hbu7E?dY@2&!W(8N1*|RVNpi8J7O25vX|oR{R%1`zp&- zL=TcaX)1$$o%o-4y_}a+LA3ju{%Ki2UYMpHy?JubKvQ9jrP7qbRpG&Z+D_=OcTzvX z3dZ<;<|~25!R7jlS&b-&BaJ(VYX$<(xt5Ef#i0pIa>TTLfenlJ_5r2ihP87Ct5t-y y2|wJxZr);quvtL4NtCx39kMQv7mz%D6jgH9C~1|MPdQWEv3cq={~5+5%sv9)o`Tx| literal 0 HcmV?d00001 diff --git a/examples/Exists.class b/examples/Exists.class new file mode 100644 index 0000000000000000000000000000000000000000..9f03ca417afe4374e04737b4e28b539767d3f8c1 GIT binary patch literal 762 zcmZuv+iuf95IvhXUdJ&sy(CbeB`G&2EpaLERKx?Qybu9W5K_yNoouR&;&l{nQ27+T zfM<9}Br5R%d=z3fmKv4Rl4oaU=FFKn+CP7P{RYs&a~IdK$#Kg?4!4cDQ^XdwIqtf! zv1v@rLEW4?F7DyJg9jWBIUX_CFQk(CB}3kCd}6R(Cq2Qi(w0iRo5YbAe+;7`MXWfK zilOR%ZV$pQVK5BUY0%MQsZI|K&^l1P(KB8(4dl5jKiT*6~Pi`wl3iuon&G&Z1|0(I;zO_xJ*bAjST%zp^j_x zO3ar7NrW=lRl04_$>=OJXJ9|bVOS$;&x3gsv5pObm{JXkJfMA!+;KC1Fhjn*JB9TP z^`9u5!#AyjK H4mbY+w@9e8 literal 0 HcmV?d00001 diff --git a/examples/FileInfo.class b/examples/FileInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..fbdcf1118793d4167e624a715c705037cca2b12d GIT binary patch literal 4248 zcmaJ@3wRV)75?weX6I&EAZ!T`!egPdgizRml-4Ch(mWs`At4)}3lx}SCz}cT2)h$V zDz?<(quMG}tXj1qKCrb_ptwO|)B32|+G?vlqm z-v69)|9kGtKl|vLr$zxR#=pJT0z*Zg#7-|%S_ z1CzrCO0gSzR1A7C35LWF`|J5af$zj#iFa|r4LozB#6BL}B=K(cH}m9viT9{@FOT2n zMF8*Ts<%jdfM-6)5w}X*#)A(@e3<0}`VW52|=b#kT}XIwS23VS$UbwDf7a zwP0LJ#)4rpZ6sqW1UxlH(lA#FC{+tK3b^Z1QC(nSi;>jV4J5ksbf?x8rx|xbGm-*R zs?Jk|6TJ>pG-xiQH-Eq6JH=G(sck7J?*BQ^QDcO@+%w&AnhV25=En=oV zXa>VZqCc+JYo^|qN+&dvc(=9&qtW2dP@uOrlt_d!nShn|9f3+KZ@@I-!PRL!mP#91 zvQCTZ$*7hVm|NU#Q#`K6w0LbgHjvPhW`V1~?179H(?fwgtw7B{I=(Vclj=8;QGJja zGpVoJ=*a{#iLPKc(Zz8-d>0Qh_3x?pz7IdZBR)KeAF6oFhsW_F>QZs#T%)fU=;_gk zl0RVo%v25t1$_81o>1|m4?h8IsSrVdW@$C(h_u(l#>_h_8 zfSB3K$j|XKC;ozAN@&qCW@{>H^cZ?H6cCtD>>qdBhi5o`8-D4-v-p*xrjc1=M5B6= zYd(kPx#q7Oa3El0xG@a>2G8daBU5jr^=>nj9%AITMT9ojt7UrmVPoWXIKw4>pHF12 z8eq7$)_@{9e+ ziBL{E)k>P2^XCE*AJa!4Uc%GFfP(9d%+AKNu7~@zZi~Uo7Lq@8CdZBDYJbV+)TNRp zt&oYMSal7m>I72w=um9bZf~DU86Jh;qPM*0yd?M z9D{%GL7v4w=@HKp4C~zk1P_H&yjtw3)z3h?o=${(c#RY6r!UAF z$^x{#uC29|gvGjVY-(u;N5Y*Ag_(7=tqt|t+nd@O1bkLZdq>l{&V~+wan>;0(6Nz6 z-rQ(SZ3jh8um+pjI@Yf4Xxq?Es*`_>#}H}j>Z7NSl%&Ybp#bGo=jtLWn#{kW0+Xv2 zoEsxB|2&!J#&NAl#g&`rv}3FVvR_MQND7JAc_}o})-(JN)_aO0%|`OkJIO& z#F8u`ly6v4H-jW%lsaam+=;BXz)C7TTdZ%yH794*7pj>wzpD8HX%i{UsdDt;qIhbN zr^o)B%yV{;U&iyWAi6RydDgm{dELzySl5#iKsqvq=uwrt%2`$DL@TSBE>Oiw>}}nn zuF`;Yj;hd|^$yaz#J84;Jt4!D10$%>l&z;aiw0C`A{#>0jLria1ICCrbhM;0Rn1 zzcLJW$UTCR$S^#ilIqct!x%pTHR6}UD1ESc)N=^cBk)G5m8HWN7gG7YLe0Wg?WT$G zAy0M5(vz5Q^$|>Qgn0<%*$Q_>Nfr}lL{`>R-a~|l_iL5|Z3HmM4w9W9J56?$hzH14 zk?kPcM|OzpA+j@o%S|?qtez}Nc7W_C*|TJCQ0*CHHDp`K_L4nw9AzVzM0@l5FUn$a zg@=ff&!RkwDMyqZ2R_xtr)5!*#~U5^bQ`a9#zPML z4hO!1@j}0A-r8@`=ZL-9uC=mwcB0vVzhg|TRp->2<%q4dYh6?9E#7qCbv9m4-tH}) zbKng&-dH?4j5_euHonGz-{ruYY`ocl-%#OkXR$VWfXNt#a=K2#bW~s-W}uqnY&m9OHD+TyN#AvtizqI^PRvIN3vdPt1${k*8;ivp z1jRfo5w%z<>ak2{xI#p6rML}Oi313U`>;YB#ns|*tQ1dRm3SGo;uX}n#-rX`#QGvN0;+Lht_o DEBq}Z literal 0 HcmV?d00001 diff --git a/examples/FileOps.class b/examples/FileOps.class new file mode 100644 index 0000000000000000000000000000000000000000..9a0e1763e78839b8fafb72ce489ab1bd13b3c75d GIT binary patch literal 7889 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 literal 0 HcmV?d00001 diff --git a/examples/FilterFiles$BigFileFilter.class b/examples/FilterFiles$BigFileFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..1cd17108333b57ce2b83c8736afbee6a13dc3a44 GIT binary patch literal 502 zcmZWlJx>Bb5Pbs&i{~Mr2%@4C7N80D12h&AO*BLcjD_9Zx#E%IFt>;ChgjR%*w|=d z;ScafiL(%mV6pS@=DpdO`TTnS0MJCuL>h}GmQYMF0MKY8P!gyJtP;|De(1;hgk-&O zK`>f_D@n+;{ZO6``>u@69XDVk?RcKNjR~cCyXX1W%2s{X?)2RwKajhPOM-cLuNnRz zR03<9cLu}Ale$jGvx{Y<6V>cFcaDV&<^`ZPQhoOvG zfuodE++BCH11Id-XKqh=JZAadkUzajQw#^*U9%ukx=nnDdJ zJ}p7;Q4{=lAxFp|$R bvIQ(KVz4;Jf;`6w6tKeHWGsbcl#%%cAGc|K literal 0 HcmV?d00001 diff --git a/examples/FilterFiles$ShortFilenameFilter.class b/examples/FilterFiles$ShortFilenameFilter.class new file mode 100644 index 0000000000000000000000000000000000000000..0b43d229219ae075fa3b0769e1e764433163dbfa GIT binary patch literal 524 zcmZutO;5r=6r81ng;D`U@dFVLCW0~a2VlGqO-P6yYCL#r>k1|9*0ja=d%Sq@;zbh= z{s4cJ@hv7=qK9VQo6fv_^FBV`-U0NmV?amEz%o`iRyo!=HW&&=zVy>$2CdV*WY7oE zwP2`@d@0Ump)2AG#|?-nIG!hNQ-)4wH1+(O#7aWfvP1XO4@7@7b?zK1aOBvs)7Y2e ze)o#OIJs9IKavT@CiQkSi#?$n3^jsO#HvYp%5I_n&aq{piEWM+LpvkcvnNrUDz$V% zHG;eh^?zA&D5Z!8fs-U6p_hJ_J9nqTqY%wM5wcSo3x9t?EKK^2Nq3=z#_42!zac|8 zvody}(a9O|bpITEl#jY1RV_kBm_K+0d!~Y+G#4mRi42sR$IOK@;GD#69+ z9T9i!!0D+35i=6*;Xe1AbrUxyU|vEGCPX~o^dYw_a4sfc5lj47=Hep}k2!rJVudSL z1*{2JXXswh@*7$~rN5aYnj0w3Lh{y zR*Q!!Lr+38)MQ1^sO5bnQy`5)S2Tmc7kZO8R^BSnf@0*ODXXj*`4|tB*575-lBE?5 zQ@{qvsbZy^<=0SfZ=)nGnA1F5#wf-Z`i`?&&WxIRCYsVS+{_J|4E~mY@wT=`T5TPB z8f>OrE1EoQBZPrP_yt=6;xe}JR7L_jGLqP(&f42rspN7TMi!K@hi5XLBPC-WDFH8J z9AHz%ON?>bD{42G?kYTbzso_gqHGrl#A+K6V+D(Rm&}BDr5UpZk z<<2qt_i6@bi5Ehd&S-%aHV}$mPIYl(Ahi8oD=o@3dd~c31LF%z=M9oZi87+jNDb^O zF%08$^7l$gdhs&cxQSaNbNAn*=_2~64qG~6pQ*u~sKb%2!MRh1i>Q#SLrif8;Si#p!^GPV!3a?gaSnoUn7(%|qCtp%0m#-lN&o-= literal 0 HcmV?d00001 diff --git a/examples/Format.class b/examples/Format.class new file mode 100644 index 0000000000000000000000000000000000000000..998801f08ea5a024e8b0cd951e24fb65205ec37a GIT binary patch literal 8247 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 D`vG*p literal 0 HcmV?d00001 diff --git a/examples/GetGroupMemberSidsFromURL.class b/examples/GetGroupMemberSidsFromURL.class new file mode 100644 index 0000000000000000000000000000000000000000..5334b1f1bcb6dda5893b599144a71ba4bd527690 GIT binary patch literal 1663 zcmZ`(%~u;$6#qRk$xMcUlt8E>Ev9}ZK#4^~oghjfU|L8pp&(SPlkf;blT4hC+U$Fd zdso^eo331x;|ZSj9F7ZD{t>QR>HnbKmlTk%oRjk7tIr0}*%!VMV{DnfWikaq=nPsXG;-&gSgJ`BS^S|u_ixQ_&x7D+yq@rjBkMulxg za5ojq3Smw`M#!WzFt1=ioSzC!R>3V9w`D9cgr=;zFFb*uY&GUugIeU&*+q;cHNnC6qO63XTi1C3+n^4aQA>Yl}M?Dx%~zEQYRlLc7g8cCmLOc=UXeQwI8_=* zB+rI0XyhVFm#v0L01O>^xxDN1Tt=+?Y3C6C#y6|(smphOPbW91^lTwBvyv~|%dh1! z1u9)!FRo;0`2)63peUZ*c_3sl8x3CHWEeXS$1^x}mWcX|c=nv-HmYXxFjJJScj_rI z+&(Ak|E_cKrl+$f5bb~@Q;C&kgWfHD6S87P*|Vd3(IUOCSLk~teqCVV9TR@5=0>F!x(z8X8H@#W>0lR6btx8{FhY8$1meL_ zF@gwgpbt}|okc%xk?(z6MjbkSzz}wE1wWDZ<uZ#Q#aYf6)xyqKpy&ouGe`_%4k6 E2aF(-aR2}S literal 0 HcmV?d00001 diff --git a/examples/GetGroupMemberSidsFromURL.java b/examples/GetGroupMemberSidsFromURL.java new file mode 100644 index 0000000..4b6a5b6 --- /dev/null +++ b/examples/GetGroupMemberSidsFromURL.java @@ -0,0 +1,34 @@ +import java.util.*; +import jcifs.smb.*; + +public class GetGroupMemberSidsFromURL { + + public static void main( String[] argv ) throws Exception { + if (argv.length < 1) { + System.err.println("usage: GetGroupMemberSidsFromURL "); + System.exit(1); + } + + SmbFile file = new SmbFile(argv[0]); + String server = file.getServer(); + NtlmPasswordAuthentication auth = (NtlmPasswordAuthentication)file.getPrincipal(); + ACE[] security = file.getSecurity(true); + + for (int ai = 0; ai < security.length; ai++) { + ACE ace = security[ai]; + SID sid = ace.getSID(); + if (sid.equals(SID.EVERYONE) || + sid.equals(SID.CREATOR_OWNER) || + sid.equals(SID.SYSTEM)) + continue; + + System.out.println(sid.toString() + " (" + sid.toDisplayString() + ") members:"); + + SID[] mems = sid.getGroupMemberSids(server, auth, SID.SID_FLAG_RESOLVE_SIDS); + for (int mi = 0; mi < mems.length; mi++) { + SID mem = mems[mi]; + System.out.println(" " + mem.getType() + " " + mem.toDisplayString()); + } + } + } +} diff --git a/examples/GetSecurity.class b/examples/GetSecurity.class new file mode 100644 index 0000000000000000000000000000000000000000..0f1b2d2c0ac5be6e6f59e3f6de1054a65f6dd808 GIT binary patch literal 651 zcmZuu-A)rh6#k~W?Ue0eTcIdO#iHo;Cv3uP4GAIWO+}M61mtRW9h+&oyQDica_^IH z!!=x#M3X*%ui`s^XCSsTx|==c%$fOq_RO#AA7cQUXjz!UB1gqS21`0Tn!{r(TUfyp z3#+JdJmpwp$i0@aRND-OQ$JuZcazV8q1chJ*dIoL7<}}DK6T8=LpkvVD@TURhTO>+eEov~eQjn7cIM7CAk8X-3V|8B7Jo8ME$72*Uq3FlEJ1Itux UP;Qc5iFQmI@eC0M1j5S^xk5 literal 0 HcmV?d00001 diff --git a/examples/GetShareSecurity.class b/examples/GetShareSecurity.class new file mode 100644 index 0000000000000000000000000000000000000000..6d0f992ed5babe632767b6628a2b51976f9cea61 GIT binary patch literal 801 zcmZ`%%Wl&^6g?BCapJnKloSdCn)0ZVrZuFy234x6f{;?EWI!rq3}PL(={sRBYRUVaN-jK*iSycxq$69s z$V-mbRSgqUm=>7pw7gfb9s5n&@tZ0^U96a}P}Wf~v5KldevrSkFC*WJW7TF;$C}Bp zS9I7W?%=LK?oa(q6E&0tX3sY!G@}2w*^#Y8V15LhO+nJuzbBn-pBsh+tmkFwayG~I z&Tf6IlXDy=(x=E_kNpb6!d__aQ@?~NO4nz?kjFSIpdYEAF2$c3>mZO#!r>PXxL}q4 zW-BnMxc=50B~0=MQBMjihH36I^oq2CcA|0u@regg=bjmW8giIJo+&EyJ zRJ7U&w8m<>kM!PWOyo0t=-O7Xdintc`qg5sk1Vlwn)vwhyNbxsQ}M>$|KmmsY6H3% n(pDS{Eb>$$wnn=_`gL;JCfA3&eM)sxZIfaE^C&IGV literal 0 HcmV?d00001 diff --git a/examples/GetType.class b/examples/GetType.class new file mode 100644 index 0000000000000000000000000000000000000000..10281774ee27857489d830931fc89880a9781ad1 GIT binary patch literal 1590 zcmZ`(%XS+@5WQ_ZW+YE+d15*7BS8j|$WO&iaKLtgACVpTB}F4UOdbeH9{Y?Vjf^x3 zWX~65&juD*a99vHG6x@$Jzv0r6)V01xGmXHg3Y3;yQ`~iSKX?a-~RsPC4g~k2Qi44 zf~!HaVM3}&1=kc@55kX_iVx&ECDje7J`BQ#i2y#rbN~^|1Tl-7Qr!yD_OXngQ!y_s z3n~_6$ZZvI1xqTHRoqdLP_d$7RmGZ$bp;y=k^(;W>AqDJIQw92FZU!DE9RWtnBi7z zXLm-xKWjU-drQC*9oiD`E|#|~fzCDCu{LU@yj98M@5H^YR+WiA@t$0dQTy@I_{ja5tem{H10KY4Li zLmGxaUn}c$&2jCL_4+C1)4FVyv{2jGu`0aSbRIk9FPuo#sywj^Rz$Ke9np}%rc_%R z?%@*!riS}?py6G-r{JN6NAlfAxTN7zWHo$-oPc0h9(P$}WQWOBBev53DhRZd$ZY7p zNsz#dnTltZ5^Hh8G&1pZfsTgdUNXJ9oK9|%q4tKsh^M#WX+k$ocjnXa4->6m{F{V6t-4l;36*OsC)`A}%dr&a z*CmXVD>0y1=G$hLvoD>B9NVr!tx~ZZH^b>!w~IxaUE{#7aIU$Rz|o;o2AdyG1434` zax&ASdijw@D1g9uIY-=ixaVk7U*_ooSHaacd;sx7!|@8WziC7OQ4I0prmJ`cFV7Gi zhiEg0J(CCUtc}#+{f_^IY2~OB63PkqS2M^&h58*ctpy+BH0r_wp!8+OxpuKv5GcV9FFj+?@w{?VmM%Mye z^l2Y=gVqhdXG#sLy}p;<;4(dqk~(`H$8fhUwP_3{%lB7^bRUG|Z4+f5-R{9j!u|%~uFJM))?2{|hRm BS>gZy literal 0 HcmV?d00001 diff --git a/examples/GetURL.class b/examples/GetURL.class new file mode 100644 index 0000000000000000000000000000000000000000..e473c4234680bd4195f19a4bd706e806072d5028 GIT binary patch literal 784 zcmZ`%U2hUW6g|T(EG%20A3*&;Y5iI#uv!&AYWh%8l?1C1HEH^^z?4k0%#vlX>We?c zN1ye98Z|!p;7{>KsCP;%HqlLH?#!8c&OLi)zW@C66+jhtOw3@>#7UeoaN2~1Giu74 zIE!-$6tHAs8Rz4;pyEXZUovpnfXxuQE2Ie588o~2oI$VqUCxkd3dy%d{WcGtx^0gT zz3&RikhOQ3d+rO@@m$$+T45k$Z%q-+&6gcM2!$_)28y(A`Jb~3+J%&ucdtw;!pw(}ap9ik& zdORT9{?A|g11_lxWQZYW7bjW5cN%gq3MU6^e`+6xsij2gGDPj2jbh`N=hiFoK#H0_ zBIlVS)yLHCf2jTiliYqFLh89evWB%d=^GiEouF zW5l*=dgLt@KftJH8GVfSyI((OGnW{{ERT_#7AnCc$v8b-lUyaK*bH*C%2UZAS*c+G V>&Rk*&;`oW$ykO)mevvEegi@YrN;mO literal 0 HcmV?d00001 diff --git a/examples/GrowWrite.class b/examples/GrowWrite.class new file mode 100644 index 0000000000000000000000000000000000000000..2d0ecbbdb7adb105f6fe39fa920f86420aeee9db GIT binary patch literal 1066 zcmZ`&TT|0e5dKcvG;IjBqi7o`Grh5={Fpp_Ssl0uj^>Et5vsN=8j z&7YtT>5Mo&_~@fQNZivZD3^!q$$tCop8a-{AHTkQ1CYg23EdbLF(M&^t0JyRh~Ro0 zH=s%w#Ta*Qax>1|2@zQd9T?^&7sD-n-sWbKhwq4(5^mLGu(u3`#ENMdtA1TKoOMmF5fZ6urp1s}H&=GG*IKTo zS=+gi=a|-Zo+nC+Zz@K^GwBKu_sB2VzEd%lOrCsU*|GPYJEmu3d9sX4$S|aKD`wTr zxph5Ps_UG|1NRyFPX*R|ui<-iouSn^>4AucGNzFiF(YFZb28@fNXBDiWGwLF>62Y9 z_|>Z6$SB|mL)W0b?-}l(=V+Eou(6fpkwqCxSmqU|i}+E~49VkaYx=HH@ff;~p(E)G zz3SQHNfUljZEJ4-R4(nio>8Yw*gnTAMN?S_x=wv2n|l6HK_%@4PlQD zn?Y1J7mCFeQmy&!4k0aKjaC`e8V$qRVo=oL=&7#T oP0;}6N>NUnAk`B>M#k*P&pCbiF0^70Ql~)&Y73={@tybbUU3li@o z76tMjw9)pXfLGo+6!7=bmJ*n(X`{aOlZMKE#ElLSKZ&&wm@EIT9mgke)QL?ys@qJP zcGWcopZ_#f*Xq>tB$jxtr~Ry{zG&AR?pxda`MtK|T0;aVNGyj~L4kJzI-_jF0(ZCS z!kWZ-hz)E?ltXNxA|Qt(0>zPnZ;fNsv;s3D=uwE{ZtA06w3nJA-4-Zis;zrgW%Z=N zVf(RZbyP;Y{QR3%hxkxj_4%s*)YSiyJ)xIrpPEV!^*W6XXp^N`Do(2Zv_6ITysj(i z(Bmg^9v(=Gv5ay4RQKgTe^Fozd0Jo=%wv@ch*NF^UNGhdpvRV%m}HA9{X{g!ymX1& vHN0PLRlMB`_!XaVtagU{_BrH;Wg7l~%j58QaxHRjk%&+BDXwYmbC|gY)Ln?_ literal 0 HcmV?d00001 diff --git a/examples/Interleave$IThread.class b/examples/Interleave$IThread.class new file mode 100644 index 0000000000000000000000000000000000000000..12d7d518f0f6cd2c90b47ec5bc33810f853897ca GIT binary patch literal 940 zcmZuw>rN9v6#k|ccDs%gS}tk@sv`D+UGJBIpb$+6O)+U>!q06xt&7{;W_Omzd-x9i z#%OCK@d11&;~5K7t=Y_(nRETVb7p`1{PrC{3EKwJSWF;=C4)pZfor&~;f8@Y7L{gM zoo?z_QTr_eIpj4I3~&^cSk-Y`L&?AtObvH6JYa~1zQd5J99V~z=~!;ZtV!Q?J8KLR z>$Ypl4Tjm=xHm^i495&+IUXXT;StAUJYkso7tdDMZVR8|DasscSZ7F-vw^gHDOw!QP}Z=) zv59$xg@dNu4$Pq2Fl*h0D!doUUMPu}u)3<`JjZinh+#R~@?64|9+i9fzA1Xr_FRq^ z3egsIXM}orr~a0*v>3GW6W?)N;cq)u5Qu@+tX@yJlzR1lGa8E+c99b6(i_hCjQiiEsd7&N zacGS3rsD-_cE2?>X*J)~eXB_tW7HR9>G`GUl`>j1PLdH?)N0aPqEmtHN@ElTV1?or zM2_jkaGB&Jq9k?1kf6^X?G9N^7c0d+CdYk~=e{4IE1&6OssZexNz>% literal 0 HcmV?d00001 diff --git a/examples/Interleave.class b/examples/Interleave.class new file mode 100644 index 0000000000000000000000000000000000000000..4ea28d5eba64f4be5eaca725540d8e871debccda GIT binary patch literal 990 zcmZ`&-EI<55dIDP zdZV}X0*sA)0Iz%&A3&WWv76dyaTNZa#yN2s>mmyp= zEz_$p1ohlY25Gh5<_ys_)8fwuy(V`yjAoZSQqM3ghJ^llZQIx}N?pV1lp3C6TAhjr zR3E=_&g!wD=QK1V`(Z$DJ-Wc6d=lYnVY?Mp?rR++;`#U&hB|+NP7S z2E8$5%6Ch{Z7j>Uqv0;@F~ofA{9$2<|9L$cY;AEzLj_eTuVi}Sc%MosdOcf14J(4j zvW5qU6Jb9m!=#_J&G6m49iD zx@kPN0ClOsasA}}PWjghq8;uqD7N9aoXk_g>NH-%wz)-PFPxP3*j3|}5zVAt&z=5P z@%rP@GtB76aTFhNJ;U*k#U#C8@dZFw#7QQ|%93WJL-`Td9vv9YkyHr=1R)`W2+rdI z*#iEF9<@Zeoj(ZeLi>zBEI5R;mzT<45UM7>A^a>@OC@))R7mY3ytxl~a|9(HEDsTh zsU%WEoQY|47~<>*6O9i+_VM?RaZt37B3$&Z>!;7A42|x*NNbeD1ZEMXJxm}&R+ct# n4o^w1(>lJw0^X2rVUf@vrqn-TK1=5SQkW*Kk}pinh(Y-SS{&k1 literal 0 HcmV?d00001 diff --git a/examples/InterruptTest.class b/examples/InterruptTest.class new file mode 100644 index 0000000000000000000000000000000000000000..8daf42647c4922ac81a451b3a204e15b691b899a GIT binary patch literal 1239 zcmZuw$x;(h6g@A4oit6rFb|>#N)r;II3eN$PRLM}p(xQR%OFrp%iv>Y;W z7*&u}q2Q2$!z$u(9*g4$j>d3I#c`aF#_=fQ@F%{@NGBCcsA$2sf>SDkGFTfXw;}i< zcc&Gc5eNrvK_EGI&vUx&H1inubmRuHEG$FPfVNsuX%V$ATsT&ngUI8mTfKs z#TC zXnOvrWT>GJ0~&gOsRSzK0SdS~q)-WgW^RkBK9sJ@tt6XIZYEx9dH8ngV5X~1HkJ4#t zrhnaW{AnYQ+YWvB5Ao^iJd%xKkN*gnd*b&H(Vx&*Y!a^Z)174s>1jMo zfRWIJ-7G4JK?F?3DoC=R^qJ3_pf{yU%Ua3t>D>_*TPr9Fm$o|`o#C_y1o6tZ$ bO;tV_<{o9Jb7toK0A z$tYhl$VdL2!;q1au!Vc|hS6v73stH-c1uhP*pOe2Bz^n}#&5kRnN)L^Bl0R4+?6M}7=5 EpQ1W!HUIzs literal 0 HcmV?d00001 diff --git a/examples/LargeListFiles.class b/examples/LargeListFiles.class new file mode 100644 index 0000000000000000000000000000000000000000..83f6e764484a8e477439a771f19e6c454684a716 GIT binary patch literal 1427 zcmZ`&Yg5xu5IwgIq>Z82qM(9O#7A3d>-$wiMZs6WM-jz$S}&bAP0A#xqkl)g`b9?z zBQyR0f0TM|D;5MkB)NBY&+a+9o1eeF{{WD~s|b#Tf#1Ik3?UaqAM#Ng#|a%L4RqsF z1gF*ajDa}Ls?#|G=W#*BT#TTgF5?C-mvl_1n9Dk@7|e1?8LukKq>8zwpw}aqQs3za zZs@ov&{e57+(1Cw66hYcT|1Z%2&dBX0@}6uYbnrMv|TydaLUq~v&uDE`cuU>)>|uI zv)pRF6nM5RIhO6J z_@|pwrss9sCZtqvconHq2=o;#uPTeSAE>*ZQ#?pMV`3PiCidfijyoobm|@cYNlrEv z7p12{lf)!V%;K(zd$@1n0q*N4nV7>v6Y~l^-0-ccyqMfrFgZ>|4X-v~n0TaOA7eov zzDcYq@=zeQ5pCiLo|<@u=L+2-@PY!9i%Ltm-9KtPMERzt4&@#fA@Hc3mTZn^v$LI$PM4+PwJ6hP$zt}8& z%4=rEhPFfY@L$)7ixG1OhY@O3y-8e%$kZ2ft)hEj8G0hpM0BhPgP$gLG?{hbD>UsD z>4ZNqR-nTtPE83Mp|&IRC`CsRMGEP^`9IR8(^JX(&_1B|3wjc|8~BArn5i zj6`u2eXP7|W(B(^$FfcIKjLXbp6ep3CI&j(vLw>Pp2S{q>!)j9VsMRRZ>Lo`$^-@| ncn{_7CBY%Kd_P4GlUNdYN>cn5_8fjw&C5G8< zOSU673VgR2_&QAosvI>N+t{H>|CaeMY`4Y0#xCj%Q(IA`HzuvfsA9v#OC8y>v5!|A zuWh_Rm8MGzGn6K5$9`9|VutyN>v!)AW#{4f{vc?6i((PbjfF#^DW~}|bWi9qV!9IH z1qW2x>-UAaWY~F#@m`U1I*m)m8ZYFKVc9vX{y#Y%hv^O&7M%NeM3+wacXtfDuY2t& ztYM0tkNz^CwWCCGmaG*z8J*eM2<$s4409xNW2b=v=CME!oq7b5GVC$XKNkibe%Okhtqr(qD9qli3huz)gICe>M_{}JgKJpKhdIi}_S literal 0 HcmV?d00001 diff --git a/examples/List.class b/examples/List.class new file mode 100644 index 0000000000000000000000000000000000000000..2d2e7b08a66648b4b896ef14a2f5274f3fc33b7c GIT binary patch literal 977 zcmZ`%T~8B16g|^!nRZ!hDYS|ODSp7VV5?O?0YN?!o2n!wCd8+0nUZO`+oroE`tC3B z#bC)S-*Q`> zT1~VWSlYldtQ*+CbB;{|TUa!(jid_iPzUK6o$IEhb4lD~2-vP7ERq`45JRkY_UlSr zR4Fvp3tcHQNse5#NzGXrKwq-IC$ zb_>a7exGLR(S(I%uhKnPt(I_(7#0S#($`&gNR$`$n%!Gs7&kM0JYsYe|6PzF)KcXc z_$4;z>Qm;6{`{*tDYN+BUCdyNeqZ$jKoXH8d!1HOgp4qhJp=np4#N$yL){=En7~a+ zQPfjt2os*1BXF1v7S0eXeSx+)?<2ILk(UQBySEe a><|_a$3DsJkl++CHPSLk-xT=)-1-HFZrCmW literal 0 HcmV?d00001 diff --git a/examples/ListACL.class b/examples/ListACL.class new file mode 100644 index 0000000000000000000000000000000000000000..6c591f9ecbd8267830601810ec891ea11ee95dff GIT binary patch literal 1420 zcmZux$x;(h6g`iGbkj6b7-TRKN0JZ;;sgQFFljIhnt&osozSG3O1e`?$AZ0k|ACDg zH@FB@QpH;R5LfyO>V2IV(pBl(@0@$?ySe9e|NQ&y6u=l12`+eA;Dt}bs02T53K)~n zi~zrlbLJL@CnVg)9RYVGw8A6e9*_4WOk#>ZO^FEd#k7bS9v^UUR>VWTcqAgkXOFAazx9Sq4~%dm&&+=VF6EMgt5%f zpU){tHRvv-xMy|JM5y1*W*Iq)~%>{@EMALCzlGj*~v5GYr>saP_&jdV| z5k-ueJlo-1es@>RGIYAF%QT9O2i-C@uqoh$jF;Fd@Hs91W_r6lF6w04uii@ zJLftqx=Xs6O|05t*=U9yzRlTlOXu7)7PMR@r5qF;r&&;A++*v72r~?M!snHh9r;{% zHaDL3r&ZN(hIU%lIE~A=NUu7-n!xy5KzBE-Tof6_X5TT`5j`+U1soP=Lkq6pDoNZ# zgkYy{0`SLoYCnYh6-`cC0rsO4G;jHA6UT5wMhg&DY_l%^=^?&?)DYMr3!1>?xr4oU*S(UTCE3FOdU{$iWghR3Sgw z*yn$f)sf7h(;AEe0@@*>0}=-5GdBzwBWS}op_7DeP+k^Y_yi}upc_BXgI|>M8-2J& Q73?(H>-4)p&rKNl4?-A8f&c&j literal 0 HcmV?d00001 diff --git a/examples/ListACL.java b/examples/ListACL.java index 5db5783..cbc33da 100644 --- a/examples/ListACL.java +++ b/examples/ListACL.java @@ -13,7 +13,7 @@ public class ListACL { System.out.println( acl[i] ); SID sid = acl[i].getSID(); System.out.println(" toString: " + sid.toString()); - System.out.println(" toSidString: " + sid.toSidString()); + System.out.println(" toSidString: " + sid.toDisplayString()); System.out.println(" getType: " + sid.getType()); System.out.println(" getTypeText: " + sid.getTypeText()); System.out.println(" getDomainName: " + sid.getDomainName()); diff --git a/examples/ListFiles.class b/examples/ListFiles.class new file mode 100644 index 0000000000000000000000000000000000000000..190cd04937335adbb5df56ded607edfc81d21ed9 GIT binary patch literal 1016 zcmZ`%T~8B16g|^!JMFU2QfLuDEq<{rNEMYTMUf&Pq@YQO3Gr!LresKW+jO@E-u)%M z_^gSGk%S-MyMIT$(*~-5yUE-$bI+Z7?%DnE>-!0S8LaC_BF!MaZsE2NSW_S`__9aSGSzKT-j?$XRn|N^_7FFXnL~YxEyn| zFE`q)s#uk(c%UR*PeFG^6&pxlgkf;MDr;`ewJW)@T~TS3$a6d~@D%d~3Rp1k3?wdf zzGtyrtBDo^OB-0k3j<3i8dye=Y!^#nj(V1(8yw7W); zQ4D2|z&;aT7^OAbJwy~&F-9ed`V|@?6c3LP*vSTGj}R<7nfwND)e-g{bK#xncK4OVD(NZBFgNejx v!B9_L7CH%uqL1Df44SMT4ruCeVrn#wn)Ev10B-yNI27Y6 literal 0 HcmV?d00001 diff --git a/examples/ListTypes.class b/examples/ListTypes.class new file mode 100644 index 0000000000000000000000000000000000000000..6da499c26338051f421be1fb68940bc31fb66f58 GIT binary patch literal 1366 zcmZ`(OK%fb6#lL=&WxSO%ZW`xN^736Lx|h7B`u*8CrpBaU$sqA3sGd7Ni>mXY}sQ3 z>vq>omzBC}rLw40i7uQz5UWZ^Y$|ohs=uW0-ImCe&^ity60T`$$x)50x*wi z7;j@nMIwvUA3CswJIAvR2ov z+-sZNdFia<7~T;W-)UG|-Bj1Er^xuOQ9x10=P0Tu=_td{QNeZQxKXJVja#dktWmC(D@N|7jtv+BWB$fwp>%DnRJdNe zDKPA-%0_9!C{fn;;{#J6~| zZrpObQoj%g*j<6peoGkn;Bnl5w3w44UT0=8JTB#xj?Q+~^&F1c4t=%@A+X8cM zD(Fy+{;=q$ZkuktX7ff&CX$EDXrQ?*|4zN=z^kbRf^AudA4y&)?@$@ap1#Q&I-STI z4!vK&bYlH~cX1rk{Qb!%03q)vzwc5y##L|)&hA1yAQ6c3JLoGBqT>m=&{W)k0*&k7 zp9oZE2NrfQko^rx`fMM;3kq4>TnrAJSEK5b^5_RV{1voRtGm!5p+3S>N>p9wV~Dg5 zy^rBN#mLXh_YI*EvXnFtAhLu)Y!b|iIx$ArM4Y%wTqeF^qR40;WB0Kv>9|K1C5?D= zPSOdF9+z~|qcKUN9vzZ2M*6iX?mv@3_6p}g`ZyAKi#5lBeN07;zNmiepjThw2&)KT zi0>$LL@~@(k79<^u3;SCVglb`65k_+A8Gp&rtk}n;sLFG=KvnEyMOUSkJ;(JaT5RF aG@jD`UnE74|BfdaU14WV5vR!mIP)CDo+{=5 literal 0 HcmV?d00001 diff --git a/examples/Makefile b/examples/Makefile index 4eb71d0..820d0e8 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -3,7 +3,7 @@ CLASSPATH=../build:. .SUFFIXES: .java .class -CLASSFILES=SidCacheTest.class GetSecurity.class SidCrawler.class InterruptTest.class AllocInfo.class Append.class AuthListFiles.class CallNamedPipe.class CopyTo.class CreateFile.class Delete.class Equals.class Exists.class FileInfo.class FileOps.class FilterFiles.class Format.class GetDate.class GetDfsPath.class Get.class GetType.class GetURL.class GrowWrite.class HttpURL.class Interleave.class IsDir.class Length.class ListFiles.class List.class ListTypes.class Mkdir.class NodeStatus.class OpenExclusive.class PeekNamedPipe.class PipeTalk.class Put.class Query.class RenameTo.class SetAttrs.class SetTime.class SlowRead.class SlowWrite.class SmbCrawler.class SmbShell.class SmbTableFile.class SmbTableFileRecord.class T2Crawler.class TestRandomAccess.class TestSmbURL.class TestUnicode.class ThreadedNbtQuery.class ThreadedSmbCrawler.class ThreadedUniQuery.class Torture1.class Torture2.class TortureTest5.class TransactNamedPipe.class URLTest.class VerifyGuest.class VerifyIO.class VerifyReads.class +CLASSFILES=GetGroupMemberSidsFromURL.class ListACL.class LargeListFiles.class GetShareSecurity.class CountPerms.class AclCrawler.class SidCacheTest.class GetSecurity.class SidCrawler.class InterruptTest.class AllocInfo.class Append.class AuthListFiles.class CallNamedPipe.class CopyTo.class CreateFile.class Delete.class Equals.class Exists.class FileInfo.class FileOps.class FilterFiles.class Format.class GetDate.class GetDfsPath.class Get.class GetType.class GetURL.class GrowWrite.class HttpURL.class Interleave.class IsDir.class Length.class ListFiles.class List.class ListTypes.class Mkdir.class NodeStatus.class OpenExclusive.class PeekNamedPipe.class PipeTalk.class Put.class Query.class RenameTo.class SetAttrs.class SetTime.class SlowRead.class SlowWrite.class SmbCrawler.class SmbShell.class SmbTableFile.class SmbTableFileRecord.class T2Crawler.class TestRandomAccess.class TestSmbURL.class TestUnicode.class ThreadedNbtQuery.class ThreadedSmbCrawler.class ThreadedUniQuery.class Torture1.class Torture2.class TortureTest5.class TransactNamedPipe.class URLTest.class VerifyGuest.class VerifyIO.class VerifyReads.class all: ${CLASSFILES} diff --git a/examples/Mkdir.class b/examples/Mkdir.class new file mode 100644 index 0000000000000000000000000000000000000000..4c965368798ed52c717b94e557951c048460a523 GIT binary patch literal 395 zcmZut%Syvg5Ir|fjp@tU`T!U1Vipa!RosZKsxBgexJuGkZftH!l8V3O#)5($;75rw zS(uF%?mW(%Gc(Nh&&L;l2@V`s7}(f$pkc^n$HvIUSim}yO4jEBx_5jpU|bZlRG>GN zD!p0daa!I*@q!Q|kE9Y9dymsBdWnKXq~<|bmr~77S?FB8Ch4-4g{o}qQXUqoGD)u_ zi=FG|nJgzPbYWvdV2~y9sS2t*4#GTU78mwh>~qy@_yYZQ)NP!lNi8sJp}&a&Bk%vM z%$x_~2qqnXp9aATklm#0kh~yo`fG?c3TRcbRs-rp*@8wW^DiJd&MSkGevn>jo~F^>|SOOz#E z2xJd+pv`*$tG;_8kUk3gN}$lzf$EG$o{ElL&nJ=|xjGOi)lb_)_uO@SHyAiw6X{@Z zkQC-We($L>qr)JUc*%P=97jF%NhigH4q3a#HRHIMRNIhPl6YmKf~rK##ui>nY}lQo68illJYiE872IcNoXhocHOduL0%2HU9zF7Gd@G* zOi_l*bKSjg$RowDG>2yL8M@8$EnbAoly_B}>;+l&DIE`XbM=u+C89uk(Q0dN>h$1@ zeA?#Jw0|V^zhsIh42E`j`J|jk{kEJn-1@8cEKH*zI|kDMwiyahoMvRXuKE9*NDS6+ ziTu@{0rCh{S{LZlpq1 z7=`_<35uQXu#ZrBw|Ru}X{b}4wL>)Lg6zDU2ZtUmQJFGUC|)JC>!jBsosS89N}_g2 T$}1AHL`;k1U7>%OVgvO*bd0WV literal 0 HcmV?d00001 diff --git a/examples/PeekNamedPipe$ReceiverThread.class b/examples/PeekNamedPipe$ReceiverThread.class new file mode 100644 index 0000000000000000000000000000000000000000..642652c682f0c96ff5bda82d82ddc310113e85d5 GIT binary patch literal 1229 zcmZ`(TT|0O6#lliq#;l!1*)J{1x*W5M8yk;S_CattQ0TEQ)sskNz+W5GCHHb!x^7^ z>oblNMjhYvZ}>mNvn@i4nwgwUzH`}gzH@ee{QCS2z$lg#9E0XZ7*Qc&3WhNvzApGl z8<#Pr;3CGoWK2)nu0pCy5-uxHp$TzC#)Md}3UN)iUzc!0K{qBPOeyHWO&QY?ZcCV9 za2XauPwJ(@JzOkSecrI<&d{ktkB7z|m z1301LIQk{rRWXY>6(?~@!aWuDLFu%OMab4LMSKbKDjp!E;vp6odh0cry0sRkf(&ad zQOW0dNyQ_iY5PMzfjm~Rh>VIQJYncO>M3%el)De{*;iR^J4Vq`@eD%@DpeNA6E)>^ zo|EvLVW6d?!9||s#wIbbPTb}gI*tNr(z1AI#?;GYUT(?Zk4t0w)+RCd59+ToOPn;P z|GMn(0x60Wr@75(;^VN*2Z5Vl2FVsirWlX?RyT1uDO%_)o1EL!Z*5-u`gGgo7S-0T zC8LeuX!2;VPeV2GuW0`_mz`pxeGDP(@30im(_qxAtt6sUzC>#>DH00QE66x{c4Mie zXKBvbTbe>$4bx!*-1O3ni324DuD;Tk(dwc%g419)Lthj0FOXnt2Q1bZ`YLb36&v1$ zdy7zpvqA?C$## z?g*+k#2)V+T)Zg=#B^=gg!zeB&Ud+G!c^_QcOaMboOkb#UVo85Fsv{ TBOe#eBSEV|k;1rzJCJ_^pdb?z literal 0 HcmV?d00001 diff --git a/examples/PeekNamedPipe.class b/examples/PeekNamedPipe.class new file mode 100644 index 0000000000000000000000000000000000000000..dcbf77f938134b1067962f9de976353c19b6b439 GIT binary patch literal 1282 zcmZ`(OIOoC6#k|(NgKmcUKMH-woKr=r3aRWPMsnxXCq&vJ8z z7oTnxxv|Ee#Vv~$=e7;o<~D;oZCa)?%TS|-ml*tW`8Cc^pD-<+Eafs3XJod?hKN zW`Pfi1RBnvgYs=<&2>9s=Q5F0E^~ZD?9OVqiCY?OBgW8Km7%-3C~toUa96`T?kTvhA&v(c9wI?S^IcQHBMnI`XjsH!1y3}j@KnPyENNKAa}8;cx3&rZ zL&FIR3z;pRbr{Z`xQ@vXjQvemTrk$Q!JXrR<5r>M5S`q}(T*Oj#F+VrXJd+?-5aw| zay&upo*?gzi24oTR5}4dvK^yH*gfT>_H2g}3ZMAjE&l;hskJ&GiKHSil2V)@;N&a% zU}*k>&8wQ~OUp_k*_83v%ciqQm;Zyh@Cs!n7Gisjkgs14uaZ2P%hVGbZ{<|otD@@hCaMkE+(~e2LnQa><-Z^sg#x#zFFN$O->iE;R>VUTO4;qa&C!KcYFzR8z=VRy zcG9YgMnegfHD&Ga?_LCei1@|A>r~ zJcOL?KY$YThx{%AhX|$*phl%nIO9S~k1M|Sm~K%T)DH-UBp0<&IV3mLxu|~!c^_Q^ zA=yQPi^h;tZyS#t&rQb#KfQyzBnDb~PP*1=WV_2dG<^?9OiAgw^#x7>?8nYAwDvS{uK3t}`4_6SPQ6-;DS=$l# E1?;&hKmY&$ literal 0 HcmV?d00001 diff --git a/examples/PipeTalk$ReceiverThread.class b/examples/PipeTalk$ReceiverThread.class new file mode 100644 index 0000000000000000000000000000000000000000..d05ca7abfe4675034196f2d913cc5ae601d02b54 GIT binary patch literal 823 zcmZuvU2hUW6g{&G46MV4E!9%1)>;)73$0rG!1&Nc6B1$@Atu_Vg^qRGWg*LMqrb+- zKGz6M)c6DZ0sb8I&I$#M4|8Ycew=&mnfdwiY0ZrmcTNu zbF3KPxMAQXZgJ!d7$|TQIZ6zg?J~^O53D1rYE;ffUjlWq~!U3(R1aU{8S6;}rw2z46Tbg>0A@#3A)Ld73TaMN5%l=<| z$0d_i6ZuGnKX}pn?q-3Mo96qz@5>G;(GC1*^>=8DiTa!hYc-|S8U9oP1MjJHN4?+Z zEvCe%s=9QT(eSPIVbinPBy@Z{HkRmrBP2;=}fyuD~mZWT%c2h?#eS` zo`RW~?AQ1Jnpqq`KOrv(s$z(cO_DVTJw<3~ip(Q7!Z<)I#Hg6&C+M`aAtJ8_h-x3O z_z|%$;IEWdg`%g350N{T2vMbm*tJ$v({ zH_mbx-jnzI0sanuhghAk3@&r1p02K{{_5+h`tj@AcK`!e)DcFPhHf1J7*a%}=+V%t zLq(qy{Tc>z)S{~vQJmFr4(H|eLI{I8E@DWkFX_09D{>ptF^myua8-(H(tcFxMm1d5 zaD$h5(j1Slpy4sc z6FlX3hUXk6G8|cXNoWTML&F{iQ<)W!br}xrsdlN5eEm&VLh{wNEZp6k6Lzue5}Crx z(}@wO`dEdi?_ijr-S0D1c70CmJ}3W)^xB5-M>q*Waa^-R*nR1w-Z-ux6ao3#E&l;h z&2@i3Dv@e|Q6VLWEVodt4u<9(Z2p?re`%$TsAwv9oO#QAL6`r7y2vAXy+WBF??IcU z8r&w2vfYK|Q!{8qX_S*G{VOU_5h8BmZ(P|DK_jw272I5TP)gFzCvo<=WVuw+im?!v z9M(F*O$vKiLJk_0w^hwzQP|XLM~t!UxAdi6Elq-|WOD^apabnR7UUNIldVDWIPE%U zWwa_i8(?4Qhv5WCIWa(kB8U)m{7EtkRLp-?G{A>V1kyb<=hY3=BzrvsCrBuhn^4nz z8_;6GaL_|&6Se6L=rLs-2R!ifkQVriJ1ts+{sn_!#Y0_84XaJ{9u9tjx`w`WG*r|c z8vDblhb9k)!b**Y=C!TwVWma;=%HnPZEL;HLuwmrn-Xd=YNzzJs~<tby~QBj(Xe}uA@Ty{$#9yo?xgUl<& literal 0 HcmV?d00001 diff --git a/examples/Put.class b/examples/Put.class new file mode 100644 index 0000000000000000000000000000000000000000..43b1e70341208fcacc74bd7a284c56d66ae3f921 GIT binary patch literal 1305 zcmaJ=*-{fh6g|y^^kf``00|B3iWoPqQ-Kn=62t6x4!3gfBO3VBY-g!H0;DM$B2dwBsoUqI;J5c zm6QgKgBlLuutbhX^=O3DV;aUWA;ocy6B@cOEX7F`lX5-PNxA7$zDVt~iZdF{;+%@} zQlFA>(=y?VOgO`Ff#V`W_>}G1{uu_vOk8IOO;<{Sp(|^f0691mTNl7g2R_i{M5SF7OjSRz3Tiin3|INw3EJs$y9OiW_ zU{S{vT-A}o62~geENaL~; zw;6Q96UB;K@(jy2IPU1Ui+j}cY%?%LMjiK&k<~8iuw+SvIAG}BD7;Wu6Gei0H=th} z(izNu^UPO;KW{liYM+^Ccaamywz1Tl&~K%4Pdr~ZG>2lnRuitjWIJNcE|+buc@K!` z5V2lj=rot75@}i=)ohGq~tv!SfXe{s^r!7ukgGxMKhTQ+E)v-}6tkz+lU9cMBLB0%*k zt=mmdv0U*4c3}s-TKRQ=$$Lz4H)%t(GFm%_8(?o}!?1^BxCJ7Dz1T+~*&Z2D~B6Uvg-)tM*?&<5T08H&yO^q&c8!sA`~_7K|L8(#?|CNIDnQP=g+WXbRew6 zcz{hYHOB9ct8bxq?+LK^#kbEC6%UDt2tfh1kX%PszJczT8X(%!6QDO9=|i6rAl}nY zT1<^9U&>Fl7Wxibo0b8x1lSf}Fd1O`Xn>)Orl!zM$B$4G8v02Z*i6lJAxU@&QB0x- oGw8)E`slUw)2kRj3ES`-+wqc^dPN-Wrwkz?=K%dC?K_b84vTaoE&u=k literal 0 HcmV?d00001 diff --git a/examples/Query.class b/examples/Query.class new file mode 100644 index 0000000000000000000000000000000000000000..01127902eeeddc354dcf26ba0f34fa2aab2d6296 GIT binary patch literal 796 zcmZuv*>2N76g`v8i8C~%Z9-WJ6lihM5JTA>3P`jnPiX;#MHNquJ&C6B64_(ad=@;U z2qa#S_zQjnxI;ukLu}2xGk5Mecbo4&KYs<#!b1~hux#QyE@*MFgiBa4aM?s2%SBw# z`l=SICa&SS_PJqT&A>WC;gJlbdcu&k>TeiwJCP?CDs35x{WR!`_?6T3$&w2k88XzY zckM&xy<_`M*ta_>mSKNO1I^tdR}7Sl!oba?GJ(z~ZQ* z!Lfm+fm@u4u!(${c{}a(M9ffj9p4w;z7vSY9Jg_YV^ag~a@@mxjt6KmDUM!M?q0|>@d#K|utXnfGZBJvis98N3Cu-*;MTRA- z{y+9qW}RW8L_l4SQp&G7_Lh2BJ>!VvvZjm#JF9AE2?Nbn!lx= zW@a!3I*v~RtnbYW-S&d!_nc0WE}-vRW|bx=gZM$>_TmJTa6+BQ0b;-OSBKO&g!&Nab0N$v!p z=1V0mrg13JVGvHZV#R?}gpPabkAug+n*?g)4f0f~(Sas9r%#c1$Yr838>@UCB-1n! zXHt`^S3(7`7$$wqt-wZ!&=^PZKJ&6T^agRL8}-Fn1?$)#lzu3L`aCMKeFr}+bHlC>1BYlKaNX$+Tu){3%wcWnE}6yV{u+IxuuK>Q*`Sw yESQ`(-(cMI%>5Zme-14T&v*A;U@ayzxf?80W~mPIyF9nb6^kb?^R6*AQ2zqjFuwT36#fPlW?8pfT0yNv=}lo#*5W@)NQ}{h1gpuKCXK&#af(aWh3w8Y^>uuM z`lA?|^Z|S*;~6TFT6eND=X~>>`~3X%;}Sp%&kdNklfzxy)3I*gJ~lY21~PcS@z4NA z&A=wM6tc~+!?DYd?f9WDyA0`iP12L8UB#b#8k?u^AXdvGB%6P>Q@}-nf+)}nCR*>g-Y@&_^ z!)6k@L-C@v;M6*C;3d(xTkCulrzh^X%VC*l;t4}(H1LmOn+UcOc*?nQMi(15E_&fK zk(8it1I2mD(K2DRFTHi&2s(!&8!gqZ=v%pmzH_;LMeuVg6mT^iUp}^Iye3G8a*07 zd^G^yOQeWtn)P1eklw;AdNJxtfjG$1ULdVXC!;fC&A`q`pwem2&cQTtC}EXM6!jPy zEud{(X1>DwhSX~M9NO6hGDlXrJwvvC0e;k+L4Rv$?PBpea@}V29LCb`7WBFIEWOY? d$puPlof6wtqa|&RqOTD{qxiS!FO!@?`*H3)_spI5ua`FfT{P3!MoB|CjRY#v?5R|s^Z6mOeGOF&HHNJ-5s0|Q zkThCD2IV3gafYlV0)DgbT|OT;?u-z{cSOKYG48FY^XQl}CzzOaJQu;_R1(vdPac1W zMHoaH4k)+7#oXgpLXvfx#{=Q>uB7TnBg2rNdSV=zk?)$e@5(+|IMh+ck&a_D7_=W6 zLvEva>rS~BGZZ(_uQWs1`2Ts?36Cu&im$_w7z;jH@7t$EqrbRf^jkwTk)jWjCjnXp z8L~QMb@Gh7+FpS@Q^2r8c54kPMA=1_D6+K&6$<&rN9v6#k~SS(XLLr6>YI5p|2TYw?0|6KU`V!AnwNg8tfWr#MY_x7nQ3&z$dkv%mlR`~{$dEfZsy<+yDkfjJZN$ZKn1fUG+lizYZ` z4cyiGo)-5F*aiv)mbCZ4L=g`;N*oSDW?cqSZ89Y7!Uu*_C9DgEkv$oRw;jJGqJ6j4 zqDabjWxz0Lf7)xhUtFi<28T{nMKU;C(~aiNktfgLg^tXEv` zv)C80D(QX;W^=rCVC(0bl79Qh?g{OFCVFk}=^8aJEJB@~j2w7c~ zH!QrssupVu>0(_iZ!oZVf^jr211}P8Oee2ngJaXeOOzR`i-Q5QtoVnhc%y#I+*Eh3iu`pLJeuV*( zbmJ6>gQev136iV)2U1&8Jk>>d)gXKOg1wUdj?5|e!3m79fiBGaoakb3%p!9#o$uL0 z{jhd@of{^W B%fkQw literal 0 HcmV?d00001 diff --git a/examples/SidCrawler.class b/examples/SidCrawler.class new file mode 100644 index 0000000000000000000000000000000000000000..ba712c5bb68b92891f7c88d749a1c6830f02c121 GIT binary patch literal 1932 zcmb7F+fy5L6#kZ6Hd&T(DWQa0DXldGN?K}Zo1|z1RHINRp;e&TZjvP|quAdLm<9SR_1HQ1BGbWPC26Au-2gIVQoA)3zq{qO~eP zic3(6rjfT2MJ=UEa0cRo&$vw#(!4cK8+rY4IhWMU1udDS#2q#AhBZzQ%hWb>vqagY z!1P+mSSf`{xnwAjOFlBPdc=lNrnXXaWEAox8D9`Krx|$(9f9TPHElx+Wwm@Jl(6VO z6B%Tfi^PqlvNacufCxoN6v}2w7oZF%VWcNaZ8NKzBLYFi6%5E&Qn8HZGQL#t6<(+q z#Hfm^xTfMIsPi7Kt4JcHA`OCcyz4twURlvivNP1LVg(r)t11kv3H@~yS>#j%F(l!l zZD|xj@!6Bigavbw!YT?Vs(6Lx5(dg8Eu)9~>*4lC$xhkKj`v5?g8Ok9riv0Qk>N>F zBJ}GLTF>z*9@Zs{^#8A)jIxRiY)WXU=RBKS(^GWYXN&T>6`IkqD+M#Br=QMGpX7C% ztzDy2(o;x@?UJSEBsdCX;`ypIB|CF=Ls_P-9+7 zD04}4$RJzfTvJJC%;;7^PnBuBP3XYV8NG)SQ*4)i3L=IY#9T55g4w1>B|md#nN?Tj6|$p&w&vk}i*dPX$8r>Jp?dHs)I`44fr zTcTD@)+)w1?BYKh(11=clRQC8AXgVWVge!Iecm3x$rIr3+JkiTBRpb@ z?4g0XqpJePE*~WXxVBLhXrlQAuFV8);hh6gg9_4F10_muAI@O+uW;3EFTlZySE!F+0(S^L#`@l6eebhQVTK%`o2czrw8~A^>J|g3w$Byr;^%GatKjm_km`VL N`$^$?n+gs1;9sHyplkpD literal 0 HcmV?d00001 diff --git a/examples/SidLookup.class b/examples/SidLookup.class new file mode 100644 index 0000000000000000000000000000000000000000..69d110372133bc55c799653f644d9979d36e80e0 GIT binary patch literal 1338 zcmZuw+fv$46kSJ<1dKPlwAI>TZz76ZL@M4|udOXrTd1wmrvQ=0Lc);5>Sy#9`rZe9 zz?nMZd;O?R_aOpO$PC$MueI07*=KF8|Ng!LFoVw?+{c6)eoTr8crb-&0YMKsF(V?x zW0;c>0Z|V;m=H0`V~jI%d^IN`&XeaN=6OtTa6!Z(PnJY1^SC171&=QUtO{6Ta4o5t zYOXLi{FD0(&UHPfF!Ux>P1&)E8Ks<-GX+ANMOoDthW%fXNAj^8D#%(slrqbzmS5yT z&*n*1DVeIS83NWRPw7@Ut8A%U+>=ssNnQVDm1ekD!WbS1*pRS^Ertclkn_rduU_O! z1tY<^U^Ehp#1ipDEIuEOQeMimB3*@2rap&k^He>wN6wklkRlfsYuhx#3_^()70C7> ze|y)3vSR3kW3qU$O+~Wd$&Ohl?#YJnT`%WWE%U3QnQB(%<5Ha-hi*|bF1b`vv>d~9 zo6RO$PGFlyrx$C!F%0@!>!_mF)HhV4RFF??52?2sbE<<+qcZB>ZdKO5&~?j7nzbei zX}p`g!#GCizs#QwFh1+_en{CEMMkkRZ~=Bk3kDy(T~*KlHwhn+gi2WtoU{V216R(U zkj~NJbyVOyyF}+fz!ANGD>>yASOwxa+?VhiT%gMRhAWD5PrFE(qv>h+cGIgs^dRW0{ZxLM-&*2m0{~ WUi`rT9+SdJ_w2N76g?B$nZ|Y7K%26(2Fengg%~PP35xnq1X8N72vI??x-!H5@Y$!%$a-7J#*&AuP@&Lbg*i|!a0ufCQ7)V!o>=fux!G{ zC4*9EZ0?)5j4SGJh2tv6HHPv7naE;;L30`}8T5x~Uogz|WFnr9;y`5Eeh?9&$G%J$ z7MS*7R0;41H(gJ(fPf zXlwQu<(h84TGJQ6Kcn*D_s`ZC=7hga%%FdozA6cuCrLJms#B*nA$JM6hXsnDu8daX J6|GBH`~#!^i536= literal 0 HcmV?d00001 diff --git a/examples/SlowWrite.class b/examples/SlowWrite.class new file mode 100644 index 0000000000000000000000000000000000000000..84a1cff484d7700e25d019e2dce9178aade0620c GIT binary patch literal 820 zcmZ`%U2hUW6g|VTEG#Rn6zWF-TR#`5Q0r%n*3{6p#;o3z^2N#@==cg~q}=gxfp`Slxs3bu4CprGN3jtG`DtZ2BZLq#Eu zYtmnr=7uykbwsf&%`J&FRpQgA4|Eh!lBu$WRSmZpVw<*Wizf_|K}p!uH%iLxt8&Z!+%k z=e8uLnvQqyW^4;ykz@lIWEt|quH6f&!KhPhjye*#I}!dw(5c)SNl=wx{-he!a57b& z^m=^Epbog>cm~#RN1Am5cX7|aeLOJm5RWu$7I+#{MJ~BybUzh$5ka{+>eq=?sxpNm-vlX((Gc^&{5GGelc6sI4htX)Q!N7a|ct zpCTE;2yrfh)ECTuh_Fw;ew0I;KUOM0qcb%mNh=MV9yN&#ino!%4(4!~cB53y63raN H5#)aZo}IER literal 0 HcmV?d00001 diff --git a/examples/SmbCrawler.class b/examples/SmbCrawler.class new file mode 100644 index 0000000000000000000000000000000000000000..efdb5e3d1189da5fb1bd03d7f2bd3cae5464a4a0 GIT binary patch literal 1468 zcmaJ>OLyB;5dLl~TehO6v0LYXLoqE6TZv;xAwV1oBx%9Lc~GYTr@Ula2@1AsB&DSL zF4%R+q36&Ao2=L_YWv>^h@wDb-ga#Nl7NyaW;eJkw(6F^>5}bO zE4$6A<*u961~pONHE&w3M{zV$+Ns%FUfyd~^W|psirugZU2pC3UX9px%kflPAzIV4 z9f6U|jna;J)66$aXFFf^UEA3%WH(fND4>;FyKc>r7z|6aMc4ekVY$=NLC5p>NJk12 zI*Pce;$s~pEE71*pNbV7t5{=zr_mR7x3(--$0xYPI@3}p>sZHiDQ)QZ6rbs+U`@xS z)V+xF0%y7)b}L_8eOv~e=XBh_=PJI?@g=^J2|vzJrgu&t-p7V~!L)`?(ps(VST$eZ zTvz2-ety|(Y_;5`Rlk0%)DthrqDxedHk6Ugi8XA`mrQw*(=18tYr_*k%eOq=Y6^r} zy9}KSdcXqL*Z`kxu*_zmr|urLK)5Z9=*4FDw~m8jw%e9d7ntfb2+AyE`+S0iFxnI5 z|Bb@4%_G(xYi7MX#k9FT+>bLr)({SO5S3 literal 0 HcmV?d00001 diff --git a/examples/SmbShell.class b/examples/SmbShell.class new file mode 100644 index 0000000000000000000000000000000000000000..b9096fac954c71d971b4356c1bcb2b86bb6a73e4 GIT binary patch literal 4776 zcma)A33yc175?wM$;`{-B^d@MI-oc%Xb1xlRM3H{2&iBJlpryP%1h=Yc`!?uMS@kU zl~!@ZtqK)ITt?9x6^vN@O08Cb)a^!G{7i)ZQq1%TQSnI>3_?%2H({Z^_u8_&+eYg@=>G*>5R||Qa z4`0NWq`5|#Yjv!b{yHzN_hB?{@Zv^Mev=P3V}p)cM9Zxrahnfq=q{&<+hufz7hl$K zrw`+BmyV4(HhJ+CAC3_?<8ZeZn|(MAcS&=PH23P*qT@bMw^hgeqVWM84@&=#@bl6< ztm6?K+jKmt<1t}<)kiFk3+o9lwoAXmhbVUHc+!WbuuCWfX?mpTmF8(3&*<1K!)Hb2 zIl;3>$JfLKUzh#Aq2qb!zp3L}I$qH6q6mLm$9HsmSI0{_zNh2+I)0$zhdN%?@gpx@ z@nIQW_2S1qEXS)p1f|L0Ctmziyh=M);AdX^T%jzJHPcyzK*LJ&60<&TCOhhzvS~Zn zF+<^q4lBDL8&51UGnqB1bZk~G+i4}UcAJ^CQ%Qx|+6fIS+wAsCeJ0Ub|Gy=v$~`+3 zvlOZu?4-3ImuR)pOU%|dDSFy6V?tFpMAQvO;hWptW_8Jq83oTwJ85T6QwY`$mz}Uw zK}+X|Oskc#J7L@zlLdnpzcBDi{EDj&hID4G zz1>P1NTAEWuko4}uN!y+s|@VLZ|Ko*dnz3^@TO3Hi&b9y&cItB4qq-~rITjDijw^{ zk_J`^`}YR^fOic15${T~kAht#hl}8!@Sei4pT^As>CXzI2LShb&cI*rS1;Z-@PVj< zVEvnczYE3~ECc_*KNZF}E3;O2w!XqC5`FlxXIdRzQ%;9vOIz`wCd z!F5_#p~_09=|9N|CL!(Li~S5c6D(R^Z{R=pgo14`0|ykXNGN3}7e1!dVLKB}rm|r( z9JA9_TQ-$m%MFvMa3<7 zknt)Xl|ijC?JT9x4PP#@rSIwwp=3^GRRS`#x=P+X-}^ViKamNc!jw7e~qNSMi3 zCdyM54#zX$3%K+$QF9?rSvcGl6J3&@Vd|kv!{OCAn}HqY*qyYp^^Innxtp+J=Phm+ zNF7y!E;$DM2c4lC#646UM*V$<$3RM?#|}tKSr}9}QiR}lb}ZJKwHdmB2R4->lwk3k z+Nt_QEJ0ZoBFjv$depEGEw)zYtW1_k(Z4yd52-)|Av^W+xpK?^kb}950o68InT*-N z^Y1acx|pj9k&!CPumV!70^Gqr1RFg^Z)8)&8rpXlhZ@AQ)FtM{d5p@O(NLE-<(EQs zGG=uzY-jS+&YLigAs}BtxM5YCDo|zW4vxkH0_oSP)F%^6nD?7((H*;}jM3^}H6K_~5 z%@8;hl<%uE3Wt^qbLvnZ*^%>D-F7C+Gseqd8Qm+F8;kKl0bkg!{i1+^LynTiiWFsC2W+_O*izV`@qS+cf^#EGAFqar@3TXIVs zTUzFXU&{Chk>qI@JJKoXPsFh_dKmtGt{nK;W-^uJJ1D-$lpt3-r?@F=wyj!{Hroi_ z&154SIk`)56rWpddiEQ*NV6hbJ(;WPk--#{%iD&U#k^+rF81{$+ZuMFrhr3RX83*gA~?pi zg+?B>ed3r~3kWsm54<(eF>}mzE-3=3alA7PI;IokDTH(?x1WJHCESz=^2bL>$(vJ4 z+f~)|U~JvQT{yh17f0;q*B0O!&C zEvA(R%b6I#NRWx+FJMed)aRtZs3F=`$}Hp#`Fb!VS{7p35oNvfQ#ZmFDvP@Fu5|;* zLe$|2oLB_Sgv`4-B-KuGhRY*?lLdl$uMa}V9rXpKMGXha`aw{b#DR@i6RPkN^z>dbp_%Jj;RFJu&OYP6cOno5g=>KD~SZJIym4^{8kijPWhiqc!r zmQZ!jKed1vJ(w8{h`paFQ6}`_w9u&1gbvgFu{_HB3{R-JpMJW~)5Ga!2z||P`YfS$ z4yT`4wuOw2eue;<9pWi3CkmO&DFK<=i?cWnc|w5#&St6z^PG^^nHFV3`XF8b^Va!Q z{(y&aefe3vr-1o^a~bFwda@zVI1qAVMc)DmIqXPap_6r^WJ6}`B8R*<68J31n=mdC zSnLdfkwB9(Fd~5^&I(T+O`_;Lu8@9dsc$az=a>2x_WAwKN6SM@uNa{sR49gdK1^Gcd=f5 zfa}zUxZdT$4Xz5@=sFxXxgxmPH3u79%W;bSI`Od9g-5h*Y}2m9quRB2Oxu70J^r|M z2cFP2VY{}O^DWq+ZN*M4&+#@qsXd0Lv>n)`?c%%_z1p*QdQgEccW$QQeG+BqmiuJP tZmejj+j9@f>$Isn5Ku-})9DYvw_OkLK?PO!XiUkF`w@8&C7t1QFY%r)?cEfGldO6$PxwZ9e3zHZ^ zjQjz9(+@^sVn~$4kZfHP0$)r_O#EV^CTjds#OIuMvJEEk(Kf%|x&NNuJ6n*N*xSQb*a^K0B;6xD1;^)4x(GN8KsUW)e}Mxy-hfZW9mSk zk5>8fK#h)vIDbO*va0u%vU^euPX%x~fHMM3-6MlN7kh`YSpm^4ur^aJRcpCYZ8$ew zm)?i`33w-qj(}&3>)w2QT)-&k#xs@?2syG)c8UY`RY?1`$CA*du=!j>h z3ifz4S)Iuz2WIlU_Owi8r*fBb$?05aA~{fV?9xQ4uVa{YGvy+!tjpRZd9pr}m(E}= zKh2p?&ul?fYBrs7Ek1sH6@%KM-!4_9Qxn(_&k|glQy%ndr&9{lU#}E%HG+62BsT`^ znsnT8T>Dg#v;Tg6l)ep=>rO!`s{)bbAiGqQCgSKf5yMs!+mw0{FPYem9VP}as8)vr zp4a)X%gMe|k0KRleLPFu_3?4(s56~}I$4g*lpPtXR&oUyvr91(!#Jzd+a^XZs`iZq zaL&Yeh4w0vCNAKjiA$hYc@#_(RqtiB`Wlh~=5p@^qALp5pDPv1GlvTWS*^Ok#-FXU zI*X3X6`9=lSa)Av2U()dK0^_8fpV3KEb;WtRnBxgVa82T>ap#o@>8-8&xUaVG}>DW09qT=6GZ!A2kzwR~(X0?RB|Z zBuR@BTX|tO^G^HGhIT|DutneS7pO@qYA9yumgLec`K4RdmTiD%;^^S3U~yE0!9TFa zO6**Kup%DZ3(mu1MGW2X>KWfW3@bVhpJmO#N{M(jA*{5th= z^j%20=pwTi`S0Fz1lPOT8Pw;9tN7YGJ)fa%vG+j)53i-8(b~22Ei`@T5w{-xs`lQ* zmb(a!+(pyK0z%De8ZfN});93m0@gik%&;2!!+~_7onaKi!O7^Qd4#P*1CgZy4Woso z5_BMmwY>csu!rQ>M;h#BdXm_U6b|4Z1_^x=hw%lv@g*|&8b>gP9(;pd+~-&0I~>FJ zIF6qg&Tq)BNG;zKH?_DzB6x{+)LM_`#2meugKzRiu7ULlCaHyvs@ZUG`cjwGeuL9G z+2=Y9ce*lr{i8umwf4>iT9?9bd3GAjIKvPI$gDwzFhs|P>EPKF?(h*?bZ0+VrZV5Q zx;q<|>_4a79-;kF+8yUgp*Dd;56K0(W){y)T9W280pesQVi^WOenFl?ix3TBXSZN_az z=)MMd-hc3$VxoXn@;M60DvdLL6QtWDsWyc!&Sx-9D$S5aWqgbZKE=Ddf(~w>irc8+ h4(fboF5?~v^#JeTM_k2Ecprb@+KS5TC7K8O{sx#4%7*{| literal 0 HcmV?d00001 diff --git a/examples/SmbTableFileRecord.class b/examples/SmbTableFileRecord.class new file mode 100644 index 0000000000000000000000000000000000000000..b5d68ff5a3f77908b2ac677eace17e10bfd0ad09 GIT binary patch literal 345 zcmZWk%SyvQ6g{_jX{`34)s+i()kX6G6*rrC7whO z#m${_&*Ki~Jhu1IRg!7d2zE1N?&_#6l8A|)pWOrWSQ20_xbTP^BA(`4 oV!Z literal 0 HcmV?d00001 diff --git a/examples/SmbThreadTest.class b/examples/SmbThreadTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6acf867429631a2690927fa5b5ed34c710cd3ef1 GIT binary patch literal 3481 zcma)8TU1on8U8kNm@|w=(UCzBG?1!+fe|GJ6%a+m1_Pr4TG3WK%pCBTx!{>IiZ-pL zf%Iz9Ha4kgY7={*ZF&P_z>wPXmb5lan)IpdTc5gC`_Q$zR#u-%zkO!7iFS2n&Hne< z`@jF+|DU<@pVw{!*n~fNaS&(oumhG{l5(--lJepl&dc3^7nQgmmy0Ssp2y=SRD8k< z4QD<0q@u0vW(z!UNqyX7hl2i($^PMd^MM@%TGkbH7WO^im!PQlr9AElC<`9 zsq?xA-;nfW4_;Am!;44oO%J~1!M9a>N17Uz%XeqA)p${!k^Y`M|Gw1os@%Ph;W%;S zvWg#Mxs~^&TR+S^iKk!A9=raQ-3W&9BLPoLAJ}K~+ouIYi$IPU5pbofsDQ8ajDAk9 zj_UEg>JHm7<9+o4ik_0J8(YtW&E8~nGS*WavZJv>dNO%FVMUsFYs76ctlMTHPJVCF z)-Ai+He&`29H4G1P77JxDcg)zx9jmpB1Yak+epr^YVlO8J82}7RFf3YvfHd8^_*e# zB$86)aRGOO88_`lft}_5pIeIqYiX%C%HZ}UBGj4RYQ~LFD%N9IoqA7{Cm!3H{Z}UKyiIfhj__2&M73W$mH7^ZYhHe|3r%57=M{2n{xmh1#x=FFZ z@)L_Wq$W>8IGPRD+mT3FVMBVrjMA5k`c7tXlhm%^6if{r=+tloM>QP6VGZp#tl}pc zMlh=3BRHmE3^z55BQ3CIuBucgi#Z#Uh6zm4ue;selj`j?EP>pPrsld*4Y%-`hAF(R z;iq_A#cd5g!y6iYj$a6@n-dPDqR~SMGj1E!tO+J7bf{UwNpx%YB_=ie3cqGmO8Jp{ zs=0+XS#!tCTN-{N9gl#~uXHq;&&R}#vKj6$2$vLX^~D? zseapt%#&TQAQdvlGM(?vm~y&emR-ijOn*#f^A`Rfpq3f~rd?VtAK#VS&2@YJ?aiuJHsXc?5r3-2-d0FH4rR9%G%V+Soh7&j@u-r+4f_@2Sa zOd{fjUEQWfdlOd7h#YBeosDdPOvi~1&1PTHAA zc4i*0Y?(Wr6qZ*I(z8=zrgbRE>^WnE?fS*u&c;<-e*AyjE-{n)Op7WK)&;sB zHwJ9NJ7bH}ec4=K)P9fk67nb?*8a?f-GiO_b*E^P2B%B z*Lhp;y}E<%QScoNIkUJzjxC3BnmLpM&7quNq#oJl4ki8_%8qa-d(xpCDx_}y*fkL7 z;qEY8kZ;4Xzyw5~Y8*L%%5k^?YsaAk{K`0T1Cwx%LmeTLK$z<~s9e`TK{4`Bf@N5X zl{_uN11RN}uY4HDk?M0ix?g&*z^zDjaduD#17LSHBXxeFJ|9`jr~0uFW0As%vN&#p=LK z=&e9jz?%nlkgeme=%p7!{K9ZX*xQg(q**_|PcUQ^5x1)Fd_zP2!cCBJAfv@NJ{NB{GQZ zvyS_fk{j4Eg&keNfV+5kJSAf0T&kdY4&dj=mCAiG-@+5(K zi5Y#0z#Md7rO^E#=U;pVRCG|)R}|+{{nr&J`4Z= literal 0 HcmV?d00001 diff --git a/examples/T2Crawler$CrawlerThread.class b/examples/T2Crawler$CrawlerThread.class new file mode 100644 index 0000000000000000000000000000000000000000..0b40e5c09c71acea9cbb8349b52233d2a2d69853 GIT binary patch literal 1328 zcmZux-%}G;6#i}!Sa-Ps3IT14)i$lk5{SiLEg)JEN;E2%Xv80#*(BR$A-iFAH@3X@ zk7)bQhrTd<)G=|UopJiy7a#inlzw+Z1679M+2@;lN_0{aHur46-0{vm#2~y_- z2KEyXq8GQlux^J=m5_PIbHW9I%jpA{Lo)B*9-xxXJYc1Z%^JB6u{`@u%dOac$*MGX z68BpkZCZhhVzcE}ZADUGuvgZ!Qb!_%jKmpyBr$Ys@?nxA}Lh+&}8kYBMZt43fC3BjdL`m_ukBkOV z9`CVC?KPoP_id{taP%#Ict6>Hkdgi1UgxNVRbzNE-5rYP^}Ce~yBf}A9tmhpu;gxq z+mUAU`+eJOKBHdAbUyQL2pg$pOi9XF8B1p#AJR5~1LTU^L1?>7-)wO-liid~Gq>tH zURVrSoXhd(O7s6?lG{?C1{-=Ped;yf1UDR?#Wa1EFcjg7p;g^1`Bs%x2x9b}EI7?? zE6IU!p(TfmSxB+Bjk+6K&|v87Xj<_7pVQS?HL`Q7N|wbp9C7?o5mNS2?o7^-k}3E0Gr?mAn*iyO)s}Dx*V6Ug=1i*8&@rB~A5M zAk&HmW2589!!uiSh`>QbU~7Rach#93595SJ z?o#ZvqevyKk(^A_L}2qj{(b*cg@(gjNX>^oPIP3tMuuN{i42L!MzPVKF3DTCpu`h* z`598Y*fgVib^>rZ#z2O*k4^6HGI}xB0o%2o5ViU>QnmCo((~ntdBJM1GR?I}?jGYJ zV;@^f1e;wY>=Ls|DBTiD*vB@4Tf#BvDG~~`lOITD2G*a!H~6&~GT)Kw)MvO?n91_l?I#>oJ3~+F*mQCPzGCLk}oV P5qQ97p2ayH?GxZ1A<28) literal 0 HcmV?d00001 diff --git a/examples/T2Crawler.class b/examples/T2Crawler.class new file mode 100644 index 0000000000000000000000000000000000000000..4176b41fa421024452f436fb9435a32dd0139b4e GIT binary patch literal 1540 zcmZuxU2_vv7=BK($tKIv(AK0zS_xVqS)|d3ph+o83KFSMNTme4*(AsI)a)kiZlLvR z{OF*g7u>=ydcjSZVY~oll8&9}jW_Ba@ZSjUNis=`z1ef#_dM_Oe(yj3{jmjL64y1v za7e{r4FgE1NNP}ENa08buj8mjn3NRXke@f@Yg)xy8gv|!pSM*U*AT`D`TUMFc{hlR zw90BEOsP1jVH&42MDd=A_Zjx)9P?(CJM&8pH!BQ!-nO}utD3IMU4~GBTV{Q!=5U6< zl(2<2%`lpnT{dr+sj6u&rV5@T?8R(8pS;4L%J&~jOP>ZV+)lqy&yiIfjH zhLIk8q8GY+n$d9vXH|Tl;~erTKGbm@vpPP)1sxaVXHN2t_RV(`Mp9hTaam$U`pNgQ z(ow)^9rKdtW8@jmPsAlGesrcC>15rh)w$yd?w+)SS*>!LRP}hzU3{t{oay+K-LT?b zyB97=6{^|Nv@oNfvYL@yx+V4D#B7f% z+wNYdDqK(2l6n+PB&j>k7dgAbPhr*dxJ7_3tGU$|RrUTZU zp`gR%LHS=CibnVZ2jrOKK0=)$=^;>MFl4phD2vhN2 z!K3)kC mexz)E!Z3cO41U?>X#f+17{F`TPvV#{6g?x2HPWa7V-VOFFd`(#WAFmT3pNHU;ULE>L56^{Y8e|j@(3iEC1l?h z$Ocpjs#2x5yzr8$NL1w^mAvMoQaQIJj4=;7=k)DG=ia&9|Ni&qUjTY>-^L4=3L%P@ z1x^Yi1*QdF5ttD;C2(5cjKEoeS8bd_N?=ytyuby4*90yKToRZQcwOKPfj0%-5_ntS z9f7n!Mj$JY6L1CQEnK$oE(#Ww4EW{;3>b4F4p2;rI7pEcF-VaTaY$f@qqvA+ff0_T zMT}BR8Su{!^iw6Y;+btTi|K3WzCzkt=u1^fd2eCNKwv!YF7ju7M3R zdCxt)yp(ZEv*}EMk*?U>WHObEC#RWU0QcD@VZz^AK$7IqzaU<(q zspN}Z*@DN#Ik&Mm;9gx$7s>`Au~o;O$t=3r%2+q6V5f@9rK~F_anY<>uAEDIx#H6C zY}PH8dnF}>5sWJA!HWtnVXs0A-3ktR6!wYQk6wj7QT-TDIDmr+gE*uxgkcLsg)6wK zP(oRuBCsrQP2f6iDBQ$*3b*jS!Uywb?8uo9&l6J0$}NzZdj@j|*>c3H7|3X|ZMZd+a0bIpxg z7PI;Ja$k8V)5qzRLK{%4S95s1l&`px#bUut^Anh{Ir%c7M)YQd^+eKJ3C|S01=%+JblX&+nC840o03>q??@DvbrYGfgajMMoS$WnKJ(R^ zO{w>l+;ncmDtnWi5Y#bklmXt0RtcQ<%J~J)%}qX;;5`Y+MAJW)^1^Ify|g)_&ub*c zMXatRi*$B+s*xP0c&YS>&D0p7b6XZaNsJ+0GreD@wK>+ks+(6XTkF~eU=C~VB;TAU zpDQ5DA6uFT>1xevY|ZR#&1`SY>~PI&a?R{>&1`ke>~_s;cybF2xiQ4U97V~7M4iVl zey1=nMzrB0Zia~nBO@3m%JSRrV?8+`%bm^|e9rb7{LYRVOebR2cuu6HhJX_Z)L=Og ztA?PnC0Ikq*=pBdJMG~b!cND!8r0K&8^SuC+0K9KKnUCT51rVA?Huhu7k07?T}*iw z(~2^M-8jM$#aSMMYJyJ1*{^gao-g${f52DAI$?hu>xIoGx74vg#(^eVb+pPjSjR@; zP#tZ;b{(69!*y&HR&_+4+C2cpKiZ2RpPE+Iyq&MjE*gyS!RhCFGs5q2j8D!lN%Et#kQ literal 0 HcmV?d00001 diff --git a/examples/TestRandomAccess.class b/examples/TestRandomAccess.class new file mode 100644 index 0000000000000000000000000000000000000000..5fdf0df9107f3751a4db7fa389686693f6abec6d GIT binary patch literal 1885 zcmaJ?%~u;$6#qRk`CyzDk`h`9l>w_J;Ufa2RszUZ(O^ump;VxLOp=#mAejj>6H?vi z#-+>dT(oXH$6b3g@yIzG-FS{J^j~n}!o4dO9`8#IB@O6X+?RLf-rxOrzjyP?Ki?k# z7)Mn`2-BUoj#quSA>%d7$cSOqi#eCyKRoRA(;B8F&HeH770<%g>XcYM%**iLbuSit zSd`I)B_Wmt(25r~W%OX$hgGq^A;gxv1GTw;4RMx}iJs46aaklR;WGvz(zT zp&L9|DW$o!p{0wYkxH6wF!Y9Y61&=g7A?fy2I6~?i5t2CCl&6hrPI`;61$W#Rm#LgvQX{j(WAVC+bFlt9Hf8 zX&J8SwrZD5li-T_9#`|CQzF$g^)6LPH~P^mtHY{_4;ckna0NM0MQ?j|mMXa%w;0Yj zR>jC@4$rENsVc~$AcU@97kdo;-He{Iqjo7Br62-dKo^B5DKKC%crCN4XJ^Q_jC}@X zDX@e-U`>qk{fbt!L#j2YhSfPTvEc~#ih=`-GIY1sPpXqlZ>4v6#$mW{qI!Cr&lsjY zvK?L`vT%z^3O1>ro6&XRfkSNIS}Ar6^Q@ZEFAJk0kti5Cn?wGS@NvW8dC@jsS+i_T z$NzAPGYp2dm*T1Ta(r!da839jQ#^Zv>oi=w8+{ilxB7JC0s9a`+!h5uGnH%(i zM$bSCpMq=NJ9VQ!6#t*EKF4gnB8HyOX*=?tJtJJ=ge^&@SXw8FR_S#wR-6Ji9Gz%J z4>8uLN7UXDXNsoHF@%?Cri#@8Mx-AlIYy@;+8OQcNFD4k{a`eI0h!DI7bLjRi6~y7 zGnumoH22)JUx^&Kzl8Dx9RXJj(&LCU`5oMIhwyAk-GT0FG@kuaD}L$6fVT&}fZT)U z0_W;DpB(T!#KIxEwj!>{K)1_}PwVg}B5vV+T^b2WpVbg}f(wV}*{UNL=&j*mP^#fl z4Sf{oD?A#I9%AJXmjwco>gb=51YVyM=x(45Bu2(+xYC00JYkG|gTWS*oyd`=HUHy` z)Z>gqC3OtVNPSW>xo+EZqU@6gN7v1^d&>HG>ebH@d*vN&uOfDfdU>u#}C-UPblJ7l<*r&{7$3kPwe9_ nnoNJgW|wfl22jNWMUm+0Ch3}{=ywOMAws)MIuG4^7@hwD&9l>; literal 0 HcmV?d00001 diff --git a/examples/TestSmbURL.class b/examples/TestSmbURL.class new file mode 100644 index 0000000000000000000000000000000000000000..d73dd32109fdd266a18d48408d6ee058fc5ce8ed GIT binary patch literal 4023 zcmb7HYj9NM8Ghc)CVR4OldypxD7vWVW<#PfNr_OYyL;JHcZO55*+JEgoXFAi)IIZpToy}fg7fi`; z-tWB6`+nbh|IYsAllR^S(12gK(T*MspD)KgL|o`~!>Qi;6z$hApy3g<9CTv{`(1d{ z4G$i3;c+)Aa6rQoimxlCEitTNM7@k^Fcghy7*q7122;^-4Tlt+&@icJOha7JDGg65 zno!#%HCXCpTEmQ@vl_$DlqL@!<_^RR@RbG6}jbnIPt)9{F ztef;X4bN+s)9`{DZFo_`*EPJP;TsxW*6@mk;~HLdVcvz;1Z6wTm}%`2l=y4=1IIjRhlC!iSjz(!)nuG@t8THPxR>4K}sr#vpAIo`(h)@ z?DPf-d?y2j^+_XdYg_YM8L&rB7%?jcE6s1`K>MhSQMTrHGGN3=%ovHQHNTq$4|3le zW^10aLF2HQw32y{&j!DTMdj@G>5rLgHxtH)6;B+=h$*XnfJGZrLCx@O%M|!S8=Np= zV^>>j@BJhESnd5T)hG0%)fFE#qoy&syh#)DSYc;p+A=4C?YhOB{Y0sB;9aG6o_bcC z1>>)6$V-(v_5vwT>)kx*Nt$=4n3@U`sQ+t<|*?)BBzv+`I^O~D}RE$Bf=mD4SG;=Kdi zS@DQ1?+V(7P@#r$Z7t#MaHy@NGc?rF8|n_*B3dvSj|UqXD6`654(kc^%0I=cF5oF{ zc`&LUGSU+6oR5O4Ty=L3k27~yu_8y3mNCgG5T7QnCf%iGJlMkyw^;gyKG{qs^{FW% zHY(U$WDL|6w062Hsi$RfB3SJ&l%qtt_pUxr;F?m$PjGUqDRv;IOrHrd{J%3ka3mnu{2k;X_}kvAKFieh^h&OAl)4Hyd2_S^AD+E zcT-+NP{vHACs|p#+HGN0gwy}9687X*_%*JjQ`4-(O6`KCBbkWB3@gYIXS5t@nC6lc zicL-Dl9UZ)9-C(~g-jf$e27mY!C~p7D@?Z2AFA!gM&1rZI0u(d>Mcvb72tob#z&o6 zl=G2-JB6Dr!!sDDTf%3$&Y?V9pF-t%YI>_uSVg)y1uuopp~8m9NugTdtF!o;qIgXf zUt1KvIg76=im%V&w-m*1&Egx1;oeo_-j z%#hAuo>zJW7I6_N(ku8Keoy*$`~&|)g_KLR)R5N77THP~l8E$^nv#?m(m9!z6QqlB zQBtH=L9As<0cY(1O*ptcJF&qjhUB zfSaLXJ*~WzcHT})H((aG;V68x_zv2D68{%%_Dr~P&Gpq5um03Tp8J!zmX z_tBdm{(yV&S2WVA`{~ymkF6C&FYCK3Un`JF_%0}#xTI`lBXrsq1vJI`$ zf_4e<*~L*&#=burcwc)5l^5`UcPmTTc?sJBC5@c{XJc2Ov@skgYix1`T#Zeox#rzY zx%69RLhRr?V4bNWf>QSs2EmrL~))H;7(QotBJF>&nkjI@jc@xORTD?0kL7X_U`h+b21! zfH>QBip~5a$DqZrH_cHu!|^uDk#?A)>=;Ma)7Xk$F`RVF;gsVz-gGSB hEyr(h+VNk!U9tsdN~UnOVx?v@@8N4&8UzMSo7)bB%bU5SV+9?$J5tp6|QgmH+(bw*vsZ_(H~Y z#AV#YJz*?GF8UKO;6)b(Wq2?oVpxX6Lp&JaPoomI#sd)#CCtcZ#VnuZB+T=Cdg;L<5szhD!4nw^SmdvlWNKnr#8VNU zGq|$4#n3pjnbFrvu~H!&TPUQb^}II3APnnII_&(PMBGZ!8fBD+FZGi)~rP} zohOf{uw|w<83N&%P4$%;%d18%wqRSjksIQP^3+!ut!V3}Q4*1&LIqVf7@EVYABkTu z%T`9?T`>3;wUWJL=o#9)mzP%%MYo6*1*>?*P=BU#1z|)KJjV;#~PEkmu|YNCPIX zQB+9IF@~B`B|g}8KD|jeNJA%`99LtgJMqpEa1xcJ8dcT;REr2>XbMNp z3W7nTkU6zLS`gG?Q8Tg(J?AOyOzz=XlaM9bJR;}%Ihkh?tEwecSMP==lQ&DWxtq?O zw)TWqCn8CPAlYQ{{L~uTOl+vuxMiuYDKQ*bO;Gb$Ew9;B$XBGBL0VEXTZ@*OAYA_P!c;gJ$8-2`@iZT&RZrN*@Xry?eWd3r%oseK*|Z@7u=cK0K+PA?!ljhm@+o zTV2SzsA*7WiqhCcZ3T6+J-hI=`F-0M>-h!34hHt&Pn}K@kCHx8qMny%IBBzs8Uzh5 zWcW~n0Vo(jEfT211JvUU8t^rmaFe3k1nCw<_Tly+Aoe%Gl!=-r(F6B3YWLBYYG|q; z@W(!yQw=Q@T%4)*<9BJcn|2Kn&el|qtG%JEf=h$$pnDhXgB}jvK@fHI@%Aqt;r)a# zR&j)OAP)*bVyL6K_W7l_i6gm2m$d22=7G3p90d_ zj|g!dC`9C*Yz3Wz-k^66*8+ljEiS$j*v`K_?}_Ub`fz4Qe+*nuoAjFkv=HML>36D? z{@W13B~oWQ`f(XUv|1swYq&;PSLwUiNjY68l4@0 b++kygvnkwV4-sLHsnW@5GpY?b?K}Sgu#l8% literal 0 HcmV?d00001 diff --git a/examples/ThreadedNbtQuery$QThread.class b/examples/ThreadedNbtQuery$QThread.class new file mode 100644 index 0000000000000000000000000000000000000000..1259b6d9a113331270ab8fbd7ba417e24fd6b023 GIT binary patch literal 985 zcmZ`&ZBNrs7(E>u?P_IXFdT|H5oK(+`Hl`mVG(0oh-8b#kKKB~;?^$hopJxbf8uA1 z4x))az#nBir2=8YH21mpKCkCF&+YF&KYjryVqM2LX5vWVvQBX&j;qM3xTYh9nLsle zoUUt_3-%j2Zem_X4htIcDhfKru&AP_;*Nr-W448YRCU+8jds}!09%9MBBRp0RFK2yedQw;h z%2-mdY+wax6;BMT;wif*XD!!Z?TM3Q&p$OqN7}Aq;8{>_O+jW5+1ysBQJ@~5jF*lh zyh_XTec>xeo@6}ojrDBNvQC+5Jzt78>2SM}41`qLZs|2?mLyx4ZIZ3-2)TJUi^<%= zFx~9K>~w^~)Qe|LV<;kIiitJph7&zv;B;wL?gT(u99U+zX>a=_N63cl`X$b2&9Xe< zv(-4^t@lEJ#j^qYCzcQrhZSnlY<{SFW|Ol>4zi6b-|aY`x5CATKpEkhM4Fl@p7Oj0 z8a=-cC13cC$R2MBE>MnPgi=Ekaeg|r8BG6+`%GI9S3SVUS44jz_HG}e`99P>v{am; z5513b`EQ6Ez<4|CbN<-p3$$vXkHj8x0~Ktra)@A-)k7Q!{)|b?vzH3dZ?Kma?B*5w Uh~Of9BDjRx+yj(J+(HT3UsNIClK=n! literal 0 HcmV?d00001 diff --git a/examples/ThreadedNbtQuery.class b/examples/ThreadedNbtQuery.class new file mode 100644 index 0000000000000000000000000000000000000000..0d21e06d432f3c9789b79273e15c32b6966e3133 GIT binary patch literal 719 zcmZuuO-~b16g{t<>9pfi5NzdRfGP4(hGa@unV@VC5|aicB_@V+@!Gz?kj@)2^J-+T ze}s)|SU{q&Kfs^j&Oe~u2S}xH7Wck;=G@Qo{nwX1fB-8t3Md!w1QU5o+L*$$1=og& z8Es}Q%vtaltiAoCMDPxS^GZsQY;}2>ij*PuJd~l@WXM)m-ZB_laYrzW)I%wDdr?ay z`@Gd9#E5t(8Oqgz`Z0gcYh5l6YYmlz@^C{Z+S?!6;zWh9Of6I>Zp6K$Ep|ekT)Js4 zI=d~k*AvNUpldjAP_!`b;3*aut}$1VOXew6N%43Cj!?1u|pVOBm;V{~OGD_J!;B&rn`zA;uv7du>0Ul7%Nh&@?ZKi32S(Gq`8F=u?uVEg~NYYL6FR_R*VjDE-IF0p~-Wg)+ M3N~RTZE7R`2klg!EdT%j literal 0 HcmV?d00001 diff --git a/examples/ThreadedSmbCrawler$DirEntry.class b/examples/ThreadedSmbCrawler$DirEntry.class new file mode 100644 index 0000000000000000000000000000000000000000..f849d9333078bf17b127329a034dcf574826e198 GIT binary patch literal 502 zcmZut%TB^j5Iw`IP^(};Q4yakuo&vnMB@fEAtAbexNqszUQ&v=EgC+{1u=2q2l!FO zDH|8CxMv>soSBpP`ThC^(8i&T94ZB5v6aAf0#yyW8ukfkPbxyWHyX<4$d1OY-5AxFA$|178Wp6CM*g%6SijVs4>73u9lza>(3k8Or#E&}yzC zuh`W+dm>~y6HgF|JsFCJ>DU!&;J5*I^!{Y3h9YrAs4lN>kDNEhzy|6D)?gUWkT+0( zuHk@CTNX5KrMe4aH6!HzQ==P(LUjTsibO;xB~$Id3193-cO-@}AFG-8G?xeBh;N$X zYp40~c19!y7|p~I2av9b&0b}q>$lQu|7doYmSt4K1bTB&yo4yK4Fv5TyTzg Z-U(|@QAUGxCjX>3uW{6wnZ*wFfIn)YYTy6> literal 0 HcmV?d00001 diff --git a/examples/ThreadedSmbCrawler$SmbCrawlerThread.class b/examples/ThreadedSmbCrawler$SmbCrawlerThread.class new file mode 100644 index 0000000000000000000000000000000000000000..a95e9889a839633e48c36eba7eae1c8252aaba18 GIT binary patch literal 2087 zcmaJ@OK%fb6#lMXW19(q5EIO!q&ylYF*rP$mH?rU1QOyTfI}WUTE_MynZzEaGh;%! zV!@)@vV*S5#!`1sFjbL~ib$2(6@Q@XuDYmHiA_cN-Em$eR!8!jd(S!dJKwqI+&lj5 z-A@Yuj^e8@K13pfMzkq77KXPnIUd3ZoDAb*w9C;aeme6}-h}ZfPDy=-g3}??pi{oi zh4C5AOV0}uqAQ4QDSJY=h)Z(R8%7^4ORxSg{gV=5Kw=Fl7z$%At|+(~#s^YfQ!p&x zvC{&(lGEB;HnKyZDi_L-(`b>%eM)@>DO+)|N2R)MZ!0+TAHq{hHBGi~IfVg@+{ zc@-uKax$ynOBEKl*pXbCP*iajb1Lp3F0jK*#3&^ChI;O0^jXI!m@4MiO>T+SOace1 zFki1v#VD|?ifVn!R=w&rV+kl(!%7;q!%eO#QK^yv}whg z(fwI&(-eb{C^s-UoiQftgq=?(n6zvm`fT5%6bR+WUfRiIXRP^V)rG;lcCWjFAF_2P zshg8BmXBN{H*I!SH?soq*al{m19W;L+4s)WhNM&Twxj3CUbo0TQh{Opuka8$T&8Pz z^8XM1O6LEAzt%+?P*{&yiJ9Xmi)^I33del57&cp-MJUL&Z>@TWt8A0I7hWyPji`#u z+6T;nV@wdV)+Ld0w9L$~rDb$ph>g4%0S|vXt$f$XGYx@{IIifM5aYa=vtzvDq-Uh% zB}7Z>3wT;y!8`sEz8CO6r9q&D@38CCgb)`o5yUIYJw+(AL5#ONhvzv0;{&f(MrA0E zu=g2)j}eG3Jzde(BUHwg((>;sb8i{y&!|bZKF8L_2*#I6%Rh3B@6HeI1i``h(vd}4 zYs=U+P+7EHI%hk*?Y{Ugcogx)7oOlDO@4yadE5OF|Gp>KAr*By%BUZG;1{LkKjRVK z@ecnpCQ3upU&hWd8l>Fy2;CLnz<5VsmHsQ#xH(1rGMX>@645etkFGeDu_qc>Dq%~9 zLK#&SO9*$ksQVuH7|mD%^u3npWSLIX=Pr;k8eA;Bdy`ys8d&pT{saoem!hG?)-v{& z-hGd)+~EBfV-XtB>&kvycjXu_Ua9{Tf8#CXTm0k7`&bqp>=nDkVG(0-V&aIDeD;eI z{8SOgmHnbkO3^8LML+%e#gLRMC4cPpOBtZ)X!~u+oHryt=F>w;(q7yg7McfqEa7&CZng>V7)5E_3XDRDAsv*NO95+&?fPVq1 Ch4!BS literal 0 HcmV?d00001 diff --git a/examples/ThreadedSmbCrawler.class b/examples/ThreadedSmbCrawler.class new file mode 100644 index 0000000000000000000000000000000000000000..e0747bfca524f037270da760ebfedae290f289e6 GIT binary patch literal 1909 zcmZ`)TUQ%Z6#j->CX8b#;id#?YD*2F5=E=E!PXY222-d8Thn@*B!@5|Gl?^k0_}@- zdHElG@yQ1-1ePrO1N;#_``~X-zcWJ#G?=w=_L;rU-upY>-h1Yce|~!mU>XlJOyEi{ zM(~bYuBx~u<(!In4bi}|pyIlUcQt5uPeU(q(z2-GedJZ#(9nk^4Ph+H75>Cks|- z&M`LX!dY2!gi%qT=WJUzb9KXYg{vSoZ#oOM=WHoBvC(kWO}iSLq)o{wP%EaBH(gJ` zaK2{TGcqmDtY`A3y)G(JpJfQk*qj$lZ%u(_x2ywq)$>y_(7@fmw{F1;iUUfWz5)YxxSy64peA`M$0LS>!u7m62KFc4s+A;-a1~ztd5tF)>-^C zsrA`7bR!)ZyrN+6IF@uw;k<%Gckr_v{`+fXbJfkbRw={e5{^t-kqdXLsH#}gVdA2K zGsgt#01k}Oucl*N!mi830%@6Uxkgo7N_GcGveLe#}@AEn0$)l zB)$H`(|eNfU;}=?Lz5 zRLya0%0qQ}hsCBTW2JoL{T)_vwkN8R@mSMvT*1euuJmLUINedB*%UVKeEvB8x~4Ly zCBY?9i>HHq)O`pK30{I)+{KBjq1glz zg&rYE5lQT!uSjGk3;xqg8~xuX$`Akkd2lTL#1Qule=|l>{K#klqI1LnPF)xd(YP4n zd`)ma#UZ(X4P2(2$NfXddhr&q2IM^8H>QXF%jw6_N9g+*1M$H&hQhlT-or>S9hymp zXLj*iIwIE{JfG*0J&cmEM0~7`@u@aW4dMl>jnnZL`P{}C`gaH$Wdh(Uu3r=0L&Whd ztN0z3@cki3F=R2z3(0zoQ_5c?^b5{*0!4jwf@t5Sv4{71i89Vz9~c2VpMG! zg^SjW6=ZESU)(m;JdG#R zI0X#SUG&fqF#2dqNVd>NOGBC~^qPgIuIW#F0eg9ZmeCqKVK0dqT2J6hjDCW2OhDQc zk{twhFRG2)71CbCz*(qo@Yb!x5AdG_OVki>;>m8j8rnRmzEJQzhEJhH&|W+|MKJLZ zlJ^v$7f0}~kJS)<$Jo)YAI(v^&Z7`ALxo0;O0ykJf+odgLd-s#< z#aHLUW;F5v{3yQp1=Mo~jzMgbbME=w^XH!5J@?1&uYCX}9;nc8DS^wl5=TbGRa{eW zU4@LS5IG?hRNTO#5H}SpDabP@8(Z&uZnYS+b=T$oYS#(^9x%in*{&T{7@~S%n?YLj zTAU$SwO#(K=QOy#Wi`5lNRDN@40HNUwPU@vN?prsmujJJyX_Sbs6O3m^4-w(+(3a& zcFpVgO}=J};Pjw4Z@qNwjUM;+O_4)G5-9}*4F-w~Cs=mUGwWIo&+eR+rfJsebp^LH z+=j_8KN+()Y*rL7HI$Ija7UC{)=4fk-LAvGCB(5SWNjSg>y46`HXw8JsS+I|pn zhxqe)Ax!lpzGsUx`g&m-IZV+Ii7x`WYotg{la(XQNXy1C*dZ+#W=N{! z21xYBkiaZ1kS*LlksT%d*67Oz&^{wF6Fq`-X!O5Bu0|hcjQ#=UikWYaUmKb7F=Dk3 z5%%%V&*4_Gm?1qn*1j!sgc!-`|Zuz>S4-bpMWjXXU9on|Ocmu%o6 ril~r&Lc>v|2eV1~745viGWm)=Xo{(Wi?ohlp7Mwe89kdRoJ0ICpwPp4 literal 0 HcmV?d00001 diff --git a/examples/Torture1.class b/examples/Torture1.class new file mode 100644 index 0000000000000000000000000000000000000000..72d5f777eb6ed9e5e3e098e7ba72333240edf417 GIT binary patch literal 3005 zcma)8X?GJ<7=DH}nMoK>LJNe=B8cf47THq31x3LUz*cGzg*2I#!6XxACP3YA-}fE& zea8hc5qge(@%TYM`b|H{NBs}#^UkDAO5!=5oZRKP_r3SM&-=Xh&d-0J{T@IM&W5oG z$q?3JXBYwOl47@t8>H@+Vj#@18$;NGK@B&BF@(JW->hMu)VFB3HH`f@pduB52|=5jP-a}ibte)G{oXD z6^|=uD%b@DbNUXYj-=v6*UZLu*;c`@UDI%S6$Ce$dDGpjAR22trG1Zr<}FsnP;fz? znKzQf+^}H}q=vIZ)U=f=q-?g@X`VJmoVb%4j`!z=x0+d_w*e%}g|9i5HVUq3rt#rya0zJmE#BR}dMtoOs8|AB%?h2EZwzT_((xZ?MTrv zY}xrdxR7$3qn4dfu&l~r(#_^}RR*psx(AKCYo=2YQQ`FC^Y-MzN916$YPWL^db(+? z#U{C@E~%qLJTA+9Lgh`&a_n?Z(as9YFuaXV6$IM4yEl`P&+xg5lRCb@>pH%a*ncHb z_!_4aOy6P^#s;jmjFtB!V>oWx7D_j3xN_b`xuIaL2b)%0gtjeTD7w_3k;-wo33r%V zI=;ba1=>JGhT__l^ncK@Z!>J^eXFA+o|L8d4rdfxSPlKo;X{<0g4tDQGCR1D>0CXb zM=v|}DhOpw#}$_xNs)HuNL}7BrA7@m=?62`UY|t@VvX}vE{PgRdg)fmZD#)ZP6T7u?)ttXk&~*Hq7Vig`KHibHP2tPG2FR~* zxR}b4f+>snZ1%R3reLa2F!GdbSEJqPDDjhz&TFnUxrd)xo)_DBHN>{pQ#oljojzA? z)-eUk|JSD6ZbO5Kb5^GgyN^ zunt?fN;5gWmi2YC@);c@qhTU{b)3eu$ovu(^m(m?Z0+z`i`YtzWARXDS9ci~B~%Y> zBT8b$Xo)lfUh`sU28I8~(x_U-vVaJ)=s&0vC4|%Ul>F{Aq;5gwbwRq*v4B+DROHn!t9`uI_kMUd3j&ZCX>MCPH zvb%%?|GnL(vGFHpQvFc%e>oEb47`S0(285>|9)JG0~AAwA{b^8rqN69tG*~a0qDz) Fe*p#1{rms` literal 0 HcmV?d00001 diff --git a/examples/Torture2.class b/examples/Torture2.class new file mode 100644 index 0000000000000000000000000000000000000000..e688b4fdf5889f72d13f241b8bd9351ed75e4239 GIT binary patch literal 3481 zcma)8X?q)26@EvStnqlfL|)=Jbs|$Yl@%|EL*2wqT#|Hiu-$-Fr%o3#md4Jwl13ek zN(^nGP@t@Z5(+6a0kfE;P*PIa)UCtX^6(e<1AO7>2R=i2kH(VaNCCXu^_+9xv%L4t zU;q8)27m$lMZ-xv7{rVQAI{Wa7!OG^tFbv7#KRhbctrLdmF6*NJ|@jM5isg7hj~KiUsMqQ$#J3dq=N&txpk-n)Zp~*0v#Ghk z>D1i4R?-|*;B##SwMVVA<&G)1Jup71TJnG~0-11mkupV>lG)}Z99}wP_t{24Je~L>AI_4=}UH@nJ zIrrVAOx67$exc)4{E{MRBUM#I$FK03g3hFwUU1J>KV%ud)^Sx%>M~pw$z0B@YAcA> zb^Hd`bi9Grg2?Mw#hQY>amO^M;aWF?@LPexL!zLql$qjwdch0c zn=HHVQw-la-l99jLI@wtICjQ#T+7UcC5&S_-o}Q4)?^ z8Sm(LSBkA6X3|+HiKOYWa+|jbC|0mbU#oCa7}As>O$p10KOS?8IF;+I?A^sOE3oe@ z@g%LRD^8G=?U7!xr-FgRxL~?dEDVMt(p$+d1(E8^z46KrSY;keFJ)abMI@#}3bc8K z8Pn4qaET{xqFN)9G1CbJebpSTK;tordb=ZME3uY#RoC_ySS0lJbLn#-d`aFZwN_RF zaBT``hNLE}~#O&acbqA})Z-%m6Ir3=F* zHwkt_+>5Ti?7i^2Rl}0z;$&-ASef;P3&ld6mu$A|eMCHyn zN5|nu4g0R>DwOCte6#ykQS%1;g>heD9JopW1*h1CC=O_B>(LAyx1a$Z=8B*DLHx-vdIWo4e_LQEkNQ>UBmSsNcKP#YcrKu(&7mE6gt$}BF4W?U>+)y~wQ(%c9Ou!V$4&}$aG_(n`mRd#jxu!_m()9{ z-gyQ4%TC{2roMTiAStQTQ-uq+yu3}T>wjqNq1K*@m$v!2w@hc#&pmmBi+;+ubZR&C zyRYD`GN2!*RPPS1;Z`meO%&%PGd(oZW3J)0R_wcYc^jHYrMaFmG%_xk>7|+8>SkD5 zHzu#Q%#4gZGb@Nrm3hNlie6u+p97lbpQM;GuS9(#zGI~lO=CC9u@jB#ThPVdJ^VHg z<1j~KxRur3gQu|%&*OHyg?#j=hGTvTyM#fnbEWr}<~?c1)? zRiIbgo>vzewq%*Ax}M+jL{)VCVonxlAdZBANyJoS4P3!h6*&WWTvKt~Kmj)toE~-Z zhuOeQBoxF)Th&*duo?=CzjH|XDFa2B;2#yr|HhE#xRY^u1?sj;)~2Lm$MU4s z5_Nx7DjpjkD!x^JUG=Owl?-=%%VWi%mMhO9BzA1MN^fSicu_Ro2SDMVu(UxA3PH~_ z|4an<0lIkr#ms&}V4o{iM>{#dMi3&02A$qBNDSjPhH=Rc2$~-eI7FzA@E#(iY#-`A zQ9zV=CWc%|ga?dKW{$HCX%nnKLlS4nC2M&{w5+ZipZ`jt;9AN&dXHo_^#$5$lb$#X99ZLMJe X>zp^SgvVGW8tk91g=2>Q0nGjeodCTk literal 0 HcmV?d00001 diff --git a/examples/TransactNamedPipe.class b/examples/TransactNamedPipe.class new file mode 100644 index 0000000000000000000000000000000000000000..faea61554bb7a4bbd15435ce8ab69057432b78b4 GIT binary patch literal 1439 zcmaJ>SyK~15dJ3FWS3=?5J?~+81V`T5Jf=^h#Z0h5zycf@u*EQq?SrHsm;dY$$#R5 z4?g%{l}9aA#?p6xl-NU%EG1>C(mgYMOn+bZ?62S7egGK3a}`k}WDF@7R^h>j7uea6 zkyPQwh>Qy=6rnGwP%$dRB_S>g^H>|kaYe>e6#*m^ToXDa#Ds!Lp|7i$!VMMEm{Bo{ zF$HrXA8q`&DOMz=aZ|>;j0Fb&q+uHN6oWT5_<%v0s}wjx$FgDam3leHt#v(Dq7$jC z8zw_Iwz0gWztEE<-7F?Ewq=;b2@$ByzsmEfZB)#fj9awNRO(iqFBl>?yl&}cP0!ma zdYKp2j4B@yNi>|o0K-5lVY*b}MZGj*73*bg+WR>f#&oM#OGPJZq$nqCR_iuZ&h;`wkK3|Zw_T?2R^HgG zCF#OsrkvZaT%=5ESi)@$%ebRq1*1OmI-3o9d&@|ZdZ`YKrxa4NmyeWvxDgakTS1p zHm5FmD|G@E+P`#-#%`~L6z|uoRT=??p+m6jRq7hoW=ANlHnd>iZ&Ef~&_^zR-{&**3%kljXS zFzDb|NOsT_4AII#*g<#1m+*?So`|3PBM1DCAL2jUbnhKU6vYSzFd9Jurxl!uAcV6l&b49; z=M`LtK*6Yri>xm(bD6Cx5sc%iiffEqS8;>&O%=CT-)4^q6?gbyQpFVOyDFwxCso{I zeP2b2^#c_%tSRFd9x6yHcqGtr)v_(`x*_kaF(UO-jrp_nMyG$-8my$AS7Hg zEL)%__AIq(yfqR9!_Fr%o@?3paSn`3uH|IOvmCpuV3wXUPQ}g1DT{-(`PtN*EPJCI zs^K^W6=XEbVUW05I$L@Pa$;_t#e#yz8lGU0O8#H(cEvQME6}d%x>4~~9M|&RUC}i> z#WM}hv83SzmK40y@Cx(3AGzwfNrz!S14|9)ic|I&&HjUy9Jhw%u*`|+CAeJeDjD7i z2bhfkZz|HQ9U|X|>bfgU_Fbu?m9nI!nGT~?4V7!2bZw(xI&P8C)w-{)munqn^fd|s z%2p!rlP*&J_Xnfi#4_-6P6`ht9jZD-t%OMOAhHz7q^g0*X zz|ozt+(Rb~rTU#4N7=8yrcC&0b1cC*uAlf!iU=_8MQhO9?F->WMRK(LJOmJ{_6ZfF@-e2NP zuj@t9N1lft;2-ecsPAl^lG>nqG4suLeCK<=oj?Bi{TRS9supIkXkiJ<7RKS^D7|Cg zT?+$PG_j)h_q64GEq!3&GOp<5Lw#H|aaHeYCa!7aM+UB2$m52An&a?J~dDh$X-){imwaw7w2~bGItvLQee2G0$EP{stmW?sz*)6 zQ&B81Q7j$SR6TMczv@){>W1>v(Q(;8fyJ1qZ3!TK~Bwo3UyH zk$_ccBwL$72J#Hom}~jW02$ZC|nIY@PL@Srw$-Ukmj4k#^V<80%&}!D-_g%n6M4 z+?Va)?XNnHuUyZQ!HT01v(|ZBV5(Pa&7|rGyxq-Gjy-?NjiR3#;r^{8{!Rw5s=2x| zBw@edv)4(aZIVctTAQ`K;`NN7x2rR%S8c-&@F2Kxew9E%>-dsH2| z7-t;Fxa|5Qf4n%~<3#obn#wqi4!E##m)b* z4yRcvv0M9oJ9KNryLw8!-V5|<^e?h@YV1kV|9dX@191Rm_+IF*AA+Yju5a;lj=SJK zu+WBhMuD@&HQP}lr-zcVc0EQ02KVqe`fe_?&|ju7Bd=uoFJ}wcrQ=^w{0*5S4D7a% z%^NM4ONH!83pq+HSS<|xk`+(?{*z8E*j?A9;}*{3hv+py!*G7&h5zVNn59cCj6F-y zD0qCLI`~##6G@JUEUtqX!5K_p2&>$0@U)ImD85rV!p9hXK!JW2QAA&QmkpR{&I?Bv z-^~}=n0SuYQu*u=CU^5w`RV-YZJcZ44H~+A8Djf@v#dVJ&P-vRrwlV`Tnm)@aOodg Cs#M_s literal 0 HcmV?d00001 diff --git a/examples/VerifyIO.class b/examples/VerifyIO.class new file mode 100644 index 0000000000000000000000000000000000000000..116847762843f2e9755c32aeddc8c3c92652e248 GIT binary patch literal 2139 zcmah~OM4Sl7=BNabf)7#n?MV_08=g{jcL;Ya!CQPh0@eE#fFQa-X_VUos!JNWCBza z?{{$J#*GU%Y?VdAV|;L>3x9!sK=-cPiQhL#+wm#Sd+3OYIJih>|} zcd~a7NnVjp5Gff~IqI51@h?kAOSrC}A2SO2u*AbF5?)oX4;OfNO~&gyzriuOgbYI? z-{+9!RgOXCBp5RC?6xdpML`5JGE8<_m2pExfxU_{ED5%Rl0f@u(=wg20>1F@RRRB$ zoihYF=S<5;R*M;L&Ljgn*9Rz<>_6kDoNY|m3;xn@x}E#6;hCMxLGaxCSPO>23AF)1m#TFx4rTwvQ( zqip8a5(}eTRK*FL6i~eYRFqNS4XU}@yRlGp2nZ!M^dj$91qQZsld%5db56xg+){BH zYZBg4aR+Zpct^!uysP3puD#1!!V@j9XG?M~0)Z3r)rzB)%Jxk&XJ~n9PqXt{YJO6? zvN%`KbStOjjEZAgI#a3T%(9Vn?DCq5_u;7c03Q-*>(wW#`Mgm!a*KwZGs*&?^$n)2 zY2=e=>v0~YoAD|>!KVUkaZSZ%%;H^UF}S4>6%#nE;&Xf<(C1ciQ!Q34$1EBf z$1kv#%WDP0T6R_{TF%xi+tG@;lU<2x`LQ!x?@LlZG(UbuK*Ur$k8}SM#hw&!go5wk zKB-HyZwScix)A8v1hkM@CC&tPY??gaB+_(JFOsTuhFc=`Fft*~O_F74d#$XZbBQ$H5-3$~f~FcC zGbJvu6HySJ;;eye!LD!}*Ib}`VSDuZjj9nSv{tB! ziV(J80NXKyE{xM7eu^yT(TxOpki>4BAy01QEMX)qw=muzTYz?^T#SUPvxTvX@CF%K zDDEGL*07@mEXu%kGB83*!2YDEn{oAQk}-r1N;yEV_7aGFv>GH>`|0m>fM5*~l*5=r z*aN8pFObEhO)OCy(I$M6$ARzANu@%&YS`_6gx&`F(hc;dBfcYb4Aik_?%5jlrssdf z@8s6NzH}WLfgKF(r=f-eH5_c<5K}#r9C?JpappM8Tn>Nz4MrP?P(C**M41M8vxaDh z=0VqqJ}65aqd#++mTSa+giFMl0X~{spP{(Fmq3oWfy_vlO2oV+#yx36oWu3ntih2- zuW`f2sNn}s4sB98O()8~|8~UajK_%9qd16T7$IR!6R8WN!Yib_43T=DPWK@ZTE`TA XAr1V6i})Keq7Abi$_4F$C_n!%lMwB@ literal 0 HcmV?d00001 diff --git a/examples/VerifyReads.class b/examples/VerifyReads.class new file mode 100644 index 0000000000000000000000000000000000000000..ff0d0a12c12ea000be6786cf562b5825c7495fe6 GIT binary patch literal 2215 zcmZ`)S##4?6#i}^N4BDn4F?Pa#9GG*Hl#EZ2SS>J#o!Q1SZV@oW&1i2Sdx+CB<{Y@ zy@mFXJoJHKhQ|(_Vlz!AkA3J&r!#$N|3Lpn>A8+WOal)(chS*zzw@1QkAD02=OqA9 ze5W9SqXF!~urRME@MA=nQH7RcVs=c%aTzBR1aMTClYS%=?7=CqI4wMq3dV6p>`e%B zR($%Z*gNOPq!`c3xS(JIF3Py1AcWV%A|+;*#cWE=3L$5MM&W*WdIyPyh ztM8Y+^SU)1oAeyRnjWm4qa2&h5Fx|1Tp8D7T&JT=-LM$C!c%L%=^;V#49cWkbTV83 zGqhdgj*%;!<9gPO3Qj6wFjeeDR7EfPR9LW86mUbui#Q;R&7jt^r_-v-I(j3;T#h>` z9JnM_OofM{idkV|n3FNDqJ+0pye+Wb!MiG6!hnkR@IFNlB{5ZefDakAtdSyN6^b5d zz;z-S!$%Ao>$yx6y{Fz2;g4}s#V7bw#b+>Oe6HdPe9167UUWUpEpQUMq|uQYWrk-w z+bL;zJEIF#wJ?uPM>WbsJQg!cS=+oaSai7)FX*m2Y?U&5_a90his^-d+oR>|eBPeR zYUz^Z&2Wv1#W0Je<~jN-cU(QMWkv1C_)5jsm{ai$_Q|-V;x@izXs%0xh-)9!$eP$0 zcAqEYg6_@Kh#Nes8Lnp8o~EzzC&{Cf+0~>>q_0tA3|p&P7WZP~dOl}6CeL0tmwZx0 z44o@lCMMSGR?}Oz+ZYyA+r;M$*P|@c@-joqH22Qx4!68od4+qPu5|i>gr~&=3Te7TuOrsGC`lwO{&@TE1-35`&`-9b`jJA`j}|o3 zTBTiTPc@JuHIPv6uh`IAhO~gT2#vlnnrM(O{U558K-$oWc5EaI(Txa#_^<=;(L3Pp z?gdB>7U54VB9N*;=_{kTLnT9iEi{y|u7cLMz;9`bmeDrgqiOpc4AamN_csnmK`G>4 zx{KS9kUuE(KOd)C%9hc2Q)2fY{}J>__i$B!28sRpj$j#GcaV$-CVg}uMYM=Y>F$PK;$Phl(9KAAbpRHkRq0iL8*)__aFZg3Y5_uQp(u6s>CUh5!ghc zZl;*GB8+V$>2}1i6T{ez)AT#MLE{{~xkb5Lpe){_9R5JrTcZ5^PTqe~3jQMP4iZum zDfluD(O)}`!DTh6^Gem!B_d0{yJ-Cp+d8x|wo8w&BO>)b!p@;Z>`HZ4usgYkJ*h}z ze+4g$lho}C%iiIdcW+-uPdACQN3q zEVlIGVTXP5c4pq&@1M^v06lEGkZ4s)+E*?HUvZ_;D&?LWVzA%ha|K> zJG_gYqW&aGZu)1>BmJ1gX~JIVC{E(+SfJKjNOrFTil^zAx_THV`XYZAYBPw26EX#p zC&aFO + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +package jcifs.dcerpc.msrpc; + +public class MsrpcSamrConnect2 extends samr.SamrConnect2 { + + public MsrpcSamrConnect2(String server, int access, SamrPolicyHandle policyHandle) { + super(server, access, policyHandle); + ptype = 0; + flags = DCERPC_FIRST_FRAG | DCERPC_LAST_FRAG; + } +} diff --git a/src/jcifs/dcerpc/msrpc/MsrpcShareEnum.java b/src/jcifs/dcerpc/msrpc/MsrpcShareEnum.java index 040e872..3b4e5c6 100644 --- a/src/jcifs/dcerpc/msrpc/MsrpcShareEnum.java +++ b/src/jcifs/dcerpc/msrpc/MsrpcShareEnum.java @@ -24,51 +24,13 @@ import jcifs.util.Hexdump; public class MsrpcShareEnum extends srvsvc.ShareEnumAll { - class MsrpcShareInfo1 implements FileEntry { - - String netname; - int type; - String remark; + class MsrpcShareInfo1 extends SmbShareInfo { MsrpcShareInfo1(srvsvc.ShareInfo1 info1) { - this.netname = info1.netname; + this.netName = info1.netname; this.type = info1.type; this.remark = info1.remark; } - - public String getName() { - return netname; - } - public int getType() { - /* 0x80000000 means hidden but SmbFile.isHidden() checks for $ at end - */ - switch(type & 0xFFFF) { - case 1: - return SmbFile.TYPE_PRINTER; - case 3: - return SmbFile.TYPE_NAMED_PIPE; - } - return SmbFile.TYPE_SHARE; - } - public int getAttributes() { - return SmbFile.ATTR_READONLY | SmbFile.ATTR_DIRECTORY; - } - public long createTime() { - return 0L; - } - public long lastModified() { - return 0L; - } - public long length() { - return 0L; - } - - public String toString() { - return new String( "MsrpcShareInfo1[" + - "netName=" + netname + - ",type=0x" + Hexdump.toHexString( type, 8 ) + - ",remark=" + remark + "]" ); - } } public MsrpcShareEnum(String server) { diff --git a/src/jcifs/dcerpc/msrpc/SamrPolicyHandle.java b/src/jcifs/dcerpc/msrpc/SamrPolicyHandle.java index a0e0b4e..666b052 100644 --- a/src/jcifs/dcerpc/msrpc/SamrPolicyHandle.java +++ b/src/jcifs/dcerpc/msrpc/SamrPolicyHandle.java @@ -28,7 +28,15 @@ public class SamrPolicyHandle extends rpc.policy_handle { if (server == null) server = "\\\\"; MsrpcSamrConnect4 rpc = new MsrpcSamrConnect4(server, access, this); - handle.sendrecv(rpc); + try { + handle.sendrecv(rpc); + } catch (DcerpcException de) { + if (de.getErrorCode() != DcerpcError.DCERPC_FAULT_OP_RNG_ERROR) + throw de; + + MsrpcSamrConnect2 rpc2 = new MsrpcSamrConnect2(server, access, this); + handle.sendrecv(rpc2); + } } public void close() throws IOException { diff --git a/src/jcifs/dcerpc/msrpc/samr.idl b/src/jcifs/dcerpc/msrpc/samr.idl index 065950f..9204327 100644 --- a/src/jcifs/dcerpc/msrpc/samr.idl +++ b/src/jcifs/dcerpc/msrpc/samr.idl @@ -10,6 +10,11 @@ interface samr [op(0x01)] int SamrCloseHandle([in] policy_handle *handle); + [op(0x39)] + int SamrConnect2([in,string,unique] wchar_t *system_name, + [in] uint32_t access_mask, + [out] policy_handle *handle); + [op(0x3e)] int SamrConnect4([in,string,unique] wchar_t *system_name, [in] uint32_t unknown, diff --git a/src/jcifs/dcerpc/msrpc/samr.java b/src/jcifs/dcerpc/msrpc/samr.java index 7b355db..99fd5fe 100644 --- a/src/jcifs/dcerpc/msrpc/samr.java +++ b/src/jcifs/dcerpc/msrpc/samr.java @@ -27,6 +27,34 @@ public class samr { retval = (int)_src.dec_ndr_long(); } } + public static class SamrConnect2 extends DcerpcMessage { + + public int getOpnum() { return 0x39; } + + public int retval; + public String system_name; + public int access_mask; + public rpc.policy_handle handle; + + public SamrConnect2(String system_name, int access_mask, rpc.policy_handle handle) { + this.system_name = system_name; + this.access_mask = access_mask; + this.handle = handle; + } + + public void encode_in(NdrBuffer _dst) throws NdrException { + _dst.enc_ndr_referent(system_name, 1); + if (system_name != null) { + _dst.enc_ndr_string(system_name); + + } + _dst.enc_ndr_long(access_mask); + } + public void decode_out(NdrBuffer _src) throws NdrException { + handle.decode(_src); + retval = (int)_src.dec_ndr_long(); + } + } public static class SamrConnect4 extends DcerpcMessage { public int getOpnum() { return 0x3e; } diff --git a/src/jcifs/smb/.SmbConstants.java.swp b/src/jcifs/smb/.SmbConstants.java.swp new file mode 100644 index 0000000000000000000000000000000000000000..c8e299934bed46bf2b9bf476210a4ee600fe0cdf GIT binary patch literal 16384 zcmeHNO>f*p7#=84K3ZBpaH)h$5Rj^9vzsO%Qk6=M*PEDn?Zx({NiUXn*PA-owbQjX zOf2@aeP2gJF2hyw>C=ovWl2T-1|y_#%+M3#EI&I%96{ZWN+07}x*NlFd^1F>Gz1t8x*AFZ=@CzH(ww0rjJz@+n2KLRs zVRCZ1RD6EoIqs<^>-&~s4H*NB0mcAhfHA-rU<@z@7z2!f{|5uX)&X)GUAZ5Sfcs+H z#&rhwug3pBfWMCdAH@I1A9gVY7z2y}#sFi0F~AsL3@`>51B?O20AqkL@E>8oYDJFD z(}O?W|I-@4A4drJ9k>B}4qOA?1l|D71M9$PU;#J;{PZ{>*MSSbY2YYu1o-hVA#Vf6 zfX@yQA^J5b_DI3y8oIz%M9fd<^sf9ykpAi~`62NoIqv$T7o4|yKIdCq zJoY)O;ceT;BXNA;5I9Xpx>kpC+<@Z^Lo<0zSe8~qs(*ni?o1a?5qh8AxGZU+V5r(! z)VP$}ctw@#)lhM$xj3JvSzpr)u}UpRjc4*2FH7aJsO&YK&TFiRd|6dwxEyINMU6pb z28S7J34F~gSM<>8@E=N9saVY7fyyX`S&@|TP$cqVI#)(kg)=6vluhb9m85oxFqF|z zYDX4VMA?)iQ>{^PJ(4NT=gH^>Z`AdZ(?jP%JH?qi8LcM3t*UB>CSQ}lMYpZ5;R4A6o3Mwk2 z@n=(I;@BFSJXA(el@Z4VV;aT|p}vj@Rb+lipC0cMZ9KfFv-8;j80#1t=b=2kp*m*n zs-q@qRmlh=(v&KuxGD;D!~p#{)`6JL3Y^#vP1IF+1wy>BtecXOoKVz{oXHgH5LXRR zDT`%OhXa~qteJ|qq#6=$NU9PABM8ZuC<8tQqPn!CU<$ym5k}$w$O@V}{h(=7S_Bs< zIAm@UQ-o48J~N4s3Vzq zByLGO4W9FJHD)sUH0A`Ma6f-A4pMXUv7Q`O8RjaP6>l~4_tIVRFT zqsk1KGzA{CNCGcQ=OXb~LuSTF(V&Y+J)>h92UlKb!F@r*a%wKtD-}^QYbxzZOhW8K zF*hj8MD91wBEpequ@ux5`XurpHzdY0&7OUF7llv>ytFW8;rCc=*@={J}S$MXy4JwI@^Qa?6#Bj`#+x7AZuWalunS9VtK-|$6zy0dxJNB1M!5Qn zb|c>s1iB3$`h#9SUp-AAHBGFfb|YqJq!+%k?tNU5`M!#+P&L!%7S*-AN8LQi*TPM=H_Oymhgc{Vz?K$x#CP|E+v;Fd{RwA zs)}lzI(2e3d&@Jl5wESIVvxF9Z;~Unz|oZ}pRIWCW@cv55-!`lw$-#bWU}Gs?c8NN z>C(aDqU0Ur^;5$i@%4M5A2^+Y;dJeDo@*x`VPFd*qnmsf%E^wqX}4s@58%X>)!ek! z?bsHw(5 z1B?O20AqkLz!+c*Fa{U{{|W=IkDp0#;52%c>xaior7p{+fif-%%wcW8wJ*{m>9ECQ zSS>^;Au1bY)fDIvd_^#odUa8x^@O+rimG3D<>Sh(UAzF@wq?t$S}v*=6B~k5 z(I--C7=uzM-YTG)EAvW~$IAs0o4aS5Dy_olyMADI?_31 literal 0 HcmV?d00001 diff --git a/src/jcifs/smb/AndXServerMessageBlock.java b/src/jcifs/smb/AndXServerMessageBlock.java index 07287f1..6f28953 100644 --- a/src/jcifs/smb/AndXServerMessageBlock.java +++ b/src/jcifs/smb/AndXServerMessageBlock.java @@ -120,8 +120,10 @@ abstract class AndXServerMessageBlock extends ServerMessageBlock { dst[start + ANDX_COMMAND_OFFSET] = (byte)0xFF; dst[start + ANDX_RESERVED_OFFSET] = (byte)0x00; - dst[start + ANDX_OFFSET_OFFSET] = (byte)0x00; - dst[start + ANDX_OFFSET_OFFSET + 1] = (byte)0x00; +// dst[start + ANDX_OFFSET_OFFSET] = (byte)0x00; +// dst[start + ANDX_OFFSET_OFFSET + 1] = (byte)0x00; + dst[start + ANDX_OFFSET_OFFSET] = (byte)0xde; + dst[start + ANDX_OFFSET_OFFSET + 1] = (byte)0xde; // andx not used; return return dstIndex - start; @@ -183,6 +185,8 @@ abstract class AndXServerMessageBlock extends ServerMessageBlock { int start = bufferIndex; wordCount = buffer[bufferIndex++]; +if (command == SMB_COM_NT_CREATE_ANDX) + wordCount = 42; if( wordCount != 0 ) { /* @@ -204,6 +208,12 @@ abstract class AndXServerMessageBlock extends ServerMessageBlock { if( wordCount > 2 ) { bufferIndex += readParameterWordsWireFormat( buffer, bufferIndex ); +/* required for signing verification + */ +if (command == SMB_COM_NT_CREATE_ANDX) { + if (((SmbComNTCreateAndXResponse)this).isExtended) + bufferIndex += 32; +} } } diff --git a/src/jcifs/smb/NetShareEnumResponse.java b/src/jcifs/smb/NetShareEnumResponse.java index 23c5ed4..004ed45 100644 --- a/src/jcifs/smb/NetShareEnumResponse.java +++ b/src/jcifs/smb/NetShareEnumResponse.java @@ -24,44 +24,6 @@ import jcifs.util.Hexdump; class NetShareEnumResponse extends SmbComTransactionResponse { - class ShareInfo1 implements FileEntry { - String netName; - int type; - String remark; - - public String getName() { - return netName; - } - public int getType() { - switch( type ) { - case 1: - return SmbFile.TYPE_PRINTER; - case 3: - return SmbFile.TYPE_NAMED_PIPE; - } - return SmbFile.TYPE_SHARE; - } - public int getAttributes() { - return SmbFile.ATTR_READONLY | SmbFile.ATTR_DIRECTORY; - } - public long createTime() { - return 0L; - } - public long lastModified() { - return 0L; - } - public long length() { - return 0L; - } - - public String toString() { - return new String( "ShareInfo1[" + - "netName=" + netName + - ",type=0x" + Hexdump.toHexString( type, 4 ) + - ",remark=" + remark + "]" ); - } - } - private int converter, totalAvailableEntries; NetShareEnumResponse() { @@ -95,13 +57,13 @@ class NetShareEnumResponse extends SmbComTransactionResponse { } int readDataWireFormat( byte[] buffer, int bufferIndex, int len ) { int start = bufferIndex; - ShareInfo1 e; + SmbShareInfo e; useUnicode = false; - results = new ShareInfo1[numEntries]; + results = new SmbShareInfo[numEntries]; for( int i = 0; i < numEntries; i++ ) { - results[i] = e = new ShareInfo1(); + results[i] = e = new SmbShareInfo(); e.netName = readString( buffer, bufferIndex, 13, false ); bufferIndex += 14; e.type = readInt2( buffer, bufferIndex ); diff --git a/src/jcifs/smb/NtStatus.java b/src/jcifs/smb/NtStatus.java index f3da6f6..1df7e48 100644 --- a/src/jcifs/smb/NtStatus.java +++ b/src/jcifs/smb/NtStatus.java @@ -33,17 +33,20 @@ public interface NtStatus { public static final int NT_STATUS_INVALID_PARAMETER = 0xC000000d; public static final int NT_STATUS_NO_SUCH_DEVICE = 0xC000000e; public static final int NT_STATUS_NO_SUCH_FILE = 0xC000000f; + public static final int NT_STATUS_MORE_PROCESSING_REQUIRED = 0xC0000016; public static final int NT_STATUS_ACCESS_DENIED = 0xC0000022; public static final int NT_STATUS_BUFFER_TOO_SMALL = 0xC0000023; public static final int NT_STATUS_OBJECT_NAME_INVALID = 0xC0000033; public static final int NT_STATUS_OBJECT_NAME_NOT_FOUND = 0xC0000034; public static final int NT_STATUS_OBJECT_NAME_COLLISION = 0xC0000035; public static final int NT_STATUS_PORT_DISCONNECTED = 0xC0000037; + public static final int NT_STATUS_OBJECT_PATH_INVALID = 0xC0000039; public static final int NT_STATUS_OBJECT_PATH_NOT_FOUND = 0xC000003a; public static final int NT_STATUS_OBJECT_PATH_SYNTAX_BAD = 0xC000003b; public static final int NT_STATUS_SHARING_VIOLATION = 0xC0000043; public static final int NT_STATUS_DELETE_PENDING = 0xC0000056; public static final int NT_STATUS_NO_LOGON_SERVERS = 0xC000005e; + public static final int NT_STATUS_USER_EXISTS = 0xC0000063; public static final int NT_STATUS_NO_SUCH_USER = 0xC0000064; public static final int NT_STATUS_WRONG_PASSWORD = 0xC000006a; public static final int NT_STATUS_LOGON_FAILURE = 0xC000006d; @@ -72,6 +75,7 @@ public interface NtStatus { public static final int NT_STATUS_NOT_A_DIRECTORY = 0xC0000103; public static final int NT_STATUS_CANNOT_DELETE = 0xC0000121; public static final int NT_STATUS_PIPE_BROKEN = 0xC000014b; + public static final int NT_STATUS_NO_SUCH_ALIAS = 0xC0000151; public static final int NT_STATUS_LOGON_TYPE_NOT_GRANTED = 0xC000015b; public static final int NT_STATUS_TRUSTED_DOMAIN_FAILURE = 0xC000018c; public static final int NT_STATUS_PASSWORD_MUST_CHANGE = 0xC0000224; @@ -89,17 +93,20 @@ public interface NtStatus { NT_STATUS_INVALID_PARAMETER, NT_STATUS_NO_SUCH_DEVICE, NT_STATUS_NO_SUCH_FILE, + NT_STATUS_MORE_PROCESSING_REQUIRED, NT_STATUS_ACCESS_DENIED, NT_STATUS_BUFFER_TOO_SMALL, NT_STATUS_OBJECT_NAME_INVALID, NT_STATUS_OBJECT_NAME_NOT_FOUND, NT_STATUS_OBJECT_NAME_COLLISION, NT_STATUS_PORT_DISCONNECTED, + NT_STATUS_OBJECT_PATH_INVALID, NT_STATUS_OBJECT_PATH_NOT_FOUND, NT_STATUS_OBJECT_PATH_SYNTAX_BAD, NT_STATUS_SHARING_VIOLATION, NT_STATUS_DELETE_PENDING, NT_STATUS_NO_LOGON_SERVERS, + NT_STATUS_USER_EXISTS, NT_STATUS_NO_SUCH_USER, NT_STATUS_WRONG_PASSWORD, NT_STATUS_LOGON_FAILURE, @@ -128,6 +135,7 @@ public interface NtStatus { NT_STATUS_NOT_A_DIRECTORY, NT_STATUS_CANNOT_DELETE, NT_STATUS_PIPE_BROKEN, + NT_STATUS_NO_SUCH_ALIAS, NT_STATUS_LOGON_TYPE_NOT_GRANTED, NT_STATUS_TRUSTED_DOMAIN_FAILURE, NT_STATUS_PASSWORD_MUST_CHANGE, @@ -146,17 +154,20 @@ public interface NtStatus { "The parameter is incorrect.", "The system cannot find the file specified.", "The system cannot find the file specified.", + "More data is available.", "Access is denied.", "The data area passed to a system call is too small.", "The filename, directory name, or volume label syntax is incorrect.", "The system cannot find the file specified.", "Cannot create a file when that file already exists.", "The handle is invalid.", + "The specified path is invalid.", "The system cannot find the path specified.", "The specified path is invalid.", "The process cannot access the file because it is being used by another process.", "Access is denied.", "There are currently no logon servers available to service the logon request.", + "The specified user already exists.", "The specified user does not exist.", "The specified network password is not correct.", "Logon failure: unknown user name or bad password.", @@ -185,6 +196,7 @@ public interface NtStatus { "The directory name is invalid.", "Access is denied.", "The pipe has been ended.", + "The specified local group does not exist.", "Logon failure: the user has not been granted the requested logon type at this computer.", "The trust relationship between the primary domain and the trusted domain failed.", "The user must change his password before he logs on the first time.", diff --git a/src/jcifs/smb/NtlmPasswordAuthentication.java b/src/jcifs/smb/NtlmPasswordAuthentication.java index e550fe0..73c26e9 100644 --- a/src/jcifs/smb/NtlmPasswordAuthentication.java +++ b/src/jcifs/smb/NtlmPasswordAuthentication.java @@ -25,10 +25,7 @@ import java.security.Principal; import java.util.Random; import java.util.Arrays; import jcifs.Config; -import jcifs.util.LogStream; -import jcifs.util.DES; -import jcifs.util.MD4; -import jcifs.util.HMACT64; +import jcifs.util.*; /** * This class stores and encrypts NTLM user credentials. The default diff --git a/src/jcifs/smb/SID.java b/src/jcifs/smb/SID.java index 3102e93..5b98f31 100644 --- a/src/jcifs/smb/SID.java +++ b/src/jcifs/smb/SID.java @@ -70,6 +70,19 @@ public class SID extends rpc.sid_t { public static final int SID_FLAG_RESOLVE_SIDS = 0x0001; + public static SID EVERYONE = null; + public static SID CREATOR_OWNER = null; + public static SID SYSTEM = null; + + static { + try { + EVERYONE = new SID("S-1-1-0"); + CREATOR_OWNER = new SID("S-1-3-0"); + SYSTEM = new SID("S-1-5-18"); + } catch (SmbException se) { + } + } + static Map sid_cache = Collections.synchronizedMap(new HashMap()); static void resolveSids(DcerpcHandle handle, @@ -116,7 +129,11 @@ public class SID extends rpc.sid_t { try { handle = DcerpcHandle.getHandle("ncacn_np:" + authorityServerName + "[\\PIPE\\lsarpc]", auth); - policyHandle = new LsaPolicyHandle(handle, null, 0x00000800); + String server = authorityServerName; + int dot = server.indexOf('.'); + if (dot > 0 && Character.isDigit(server.charAt(0)) == false) + server = server.substring(0, dot); + policyHandle = new LsaPolicyHandle(handle, "\\\\" + server, 0x00000800); SID.resolveSids(handle, policyHandle, sids); } finally { if (handle != null) { @@ -505,7 +522,7 @@ public class SID extends rpc.sid_t { MsrpcGetMembersInAlias rpc = null; try { - aliasHandle = new SamrAliasHandle(handle, domainHandle, 0x02000000, rid); + aliasHandle = new SamrAliasHandle(handle, domainHandle, 0x0002000c, rid); rpc = new MsrpcGetMembersInAlias(aliasHandle, sidarray); handle.sendrecv(rpc); if (rpc.retval != 0) @@ -539,6 +556,9 @@ public class SID extends rpc.sid_t { public SID[] getGroupMemberSids(String authorityServerName, NtlmPasswordAuthentication auth, int flags) throws IOException { + if (type != SID_TYPE_DOM_GRP && type != SID_TYPE_ALIAS) + return new SID[0]; + DcerpcHandle handle = null; SamrPolicyHandle policyHandle = null; SamrDomainHandle domainHandle = null; @@ -547,8 +567,8 @@ public class SID extends rpc.sid_t { try { handle = DcerpcHandle.getHandle("ncacn_np:" + authorityServerName + "[\\PIPE\\samr]", auth); - policyHandle = new SamrPolicyHandle(handle, authorityServerName, 0x02000000); - domainHandle = new SamrDomainHandle(handle, policyHandle, 0x02000000, domsid); + policyHandle = new SamrPolicyHandle(handle, authorityServerName, 0x00000030); + domainHandle = new SamrDomainHandle(handle, policyHandle, 0x00000200, domsid); return SID.getGroupMemberSids0(handle, domainHandle, domsid, diff --git a/src/jcifs/smb/ServerMessageBlock.java b/src/jcifs/smb/ServerMessageBlock.java index 83e6550..875dc08 100644 --- a/src/jcifs/smb/ServerMessageBlock.java +++ b/src/jcifs/smb/ServerMessageBlock.java @@ -196,6 +196,7 @@ abstract class ServerMessageBlock extends Response implements Request, SmbConsta flags2 = 0; errorCode = 0; received = false; + digest = null; } int writeString( String str, byte[] dst, int dstIndex ) { return writeString( str, dst, dstIndex, useUnicode ); diff --git a/src/jcifs/smb/SigningDigest.java b/src/jcifs/smb/SigningDigest.java index 1fdee9b..2c7c7bc 100644 --- a/src/jcifs/smb/SigningDigest.java +++ b/src/jcifs/smb/SigningDigest.java @@ -58,14 +58,14 @@ public class SigningDigest { } catch( Exception ex ) { throw new SmbException( "", ex ); } - if( log.level >= 4 ) { + if( log.level >= 5 ) { log.println( "LM_COMPATIBILITY=" + LM_COMPATIBILITY ); Hexdump.hexdump( log, macSigningKey, 0, macSigningKey.length ); } } public void update( byte[] input, int offset, int len ) { - if( log.level >= 4 ) { + if( log.level >= 5 ) { log.println( "update: " + updates + " " + offset + ":" + len ); Hexdump.hexdump( log, input, offset, Math.min( len, 256 )); log.flush(); @@ -81,7 +81,7 @@ public class SigningDigest { b = digest.digest(); - if( log.level >= 4 ) { + if( log.level >= 5 ) { log.println( "digest: " ); Hexdump.hexdump( log, b, 0, b.length ); log.flush(); @@ -166,5 +166,8 @@ public class SigningDigest { return response.verifyFailed = false; } + public String toString() { + return "LM_COMPATIBILITY=" + LM_COMPATIBILITY + " MacSigningKey=" + Hexdump.toHexString(macSigningKey, 0, macSigningKey.length); + } } diff --git a/src/jcifs/smb/SmbComNTCreateAndX.java b/src/jcifs/smb/SmbComNTCreateAndX.java index 7c219fe..7bb0eb5 100644 --- a/src/jcifs/smb/SmbComNTCreateAndX.java +++ b/src/jcifs/smb/SmbComNTCreateAndX.java @@ -72,9 +72,7 @@ class SmbComNTCreateAndX extends AndXServerMessageBlock { static final int SECURITY_CONTEXT_TRACKING = 0x01; static final int SECURITY_EFFECTIVE_ONLY = 0x02; - private int flags, - rootDirectoryFid, - desiredAccess, + private int rootDirectoryFid, extFileAttributes, shareAccess, createDisposition, @@ -84,6 +82,8 @@ class SmbComNTCreateAndX extends AndXServerMessageBlock { private byte securityFlags; private int namelen_index; +int flags0, desiredAccess; + SmbComNTCreateAndX( String name, int flags, int access, int shareAccess, @@ -143,7 +143,7 @@ class SmbComNTCreateAndX extends AndXServerMessageBlock { // name length without counting null termination namelen_index = dstIndex; dstIndex += 2; - writeInt4( flags, dst, dstIndex ); + writeInt4( flags0, dst, dstIndex ); dstIndex += 4; writeInt4( rootDirectoryFid, dst, dstIndex ); dstIndex += 4; @@ -180,7 +180,7 @@ class SmbComNTCreateAndX extends AndXServerMessageBlock { public String toString() { return new String( "SmbComNTCreateAndX[" + super.toString() + - ",flags=0x" + Hexdump.toHexString( flags, 2 ) + + ",flags=0x" + Hexdump.toHexString( flags0, 2 ) + ",rootDirectoryFid=" + rootDirectoryFid + ",desiredAccess=0x" + Hexdump.toHexString( desiredAccess, 4 ) + ",allocationSize=" + allocationSize + diff --git a/src/jcifs/smb/SmbComNTCreateAndXResponse.java b/src/jcifs/smb/SmbComNTCreateAndXResponse.java index e030512..ccdcf36 100644 --- a/src/jcifs/smb/SmbComNTCreateAndXResponse.java +++ b/src/jcifs/smb/SmbComNTCreateAndXResponse.java @@ -40,6 +40,7 @@ class SmbComNTCreateAndXResponse extends AndXServerMessageBlock { allocationSize, endOfFile; boolean directory; +boolean isExtended; SmbComNTCreateAndXResponse() { } diff --git a/src/jcifs/smb/SmbComReadAndX.java b/src/jcifs/smb/SmbComReadAndX.java index 46176c6..6e3506b 100644 --- a/src/jcifs/smb/SmbComReadAndX.java +++ b/src/jcifs/smb/SmbComReadAndX.java @@ -26,10 +26,8 @@ class SmbComReadAndX extends AndXServerMessageBlock { private long offset; private int fid, - maxCount, - minCount, - openTimeout, - remaining; + openTimeout; +int maxCount, minCount, remaining; SmbComReadAndX() { super( null ); diff --git a/src/jcifs/smb/SmbComTransaction.java b/src/jcifs/smb/SmbComTransaction.java index 10f194c..91dd3b1 100644 --- a/src/jcifs/smb/SmbComTransaction.java +++ b/src/jcifs/smb/SmbComTransaction.java @@ -194,7 +194,8 @@ abstract class SmbComTransaction extends ServerMessageBlock implements Enumerati } writeInt2( parameterCount, dst, dstIndex ); dstIndex += 2; - writeInt2(( parameterCount == 0 ? 0 : parameterOffset ), dst, dstIndex ); +// writeInt2(( parameterCount == 0 ? 0 : parameterOffset ), dst, dstIndex ); + writeInt2(parameterOffset, dst, dstIndex ); dstIndex += 2; if( command == SMB_COM_TRANSACTION_SECONDARY ) { writeInt2( parameterDisplacement, dst, dstIndex ); diff --git a/src/jcifs/smb/SmbComWriteAndX.java b/src/jcifs/smb/SmbComWriteAndX.java index 9042957..edaf55f 100644 --- a/src/jcifs/smb/SmbComWriteAndX.java +++ b/src/jcifs/smb/SmbComWriteAndX.java @@ -19,6 +19,7 @@ package jcifs.smb; import jcifs.Config; +import jcifs.util.*; class SmbComWriteAndX extends AndXServerMessageBlock { @@ -28,7 +29,6 @@ class SmbComWriteAndX extends AndXServerMessageBlock { Config.getInt( "jcifs.smb.client.WriteAndX.Close", 1 ); private int fid, - writeMode, remaining, dataLength, dataOffset, @@ -36,6 +36,10 @@ class SmbComWriteAndX extends AndXServerMessageBlock { private byte[] b; private long offset; +private int pad; + + int writeMode; + SmbComWriteAndX() { super( null ); command = SMB_COM_WRITE_ANDX; @@ -77,18 +81,17 @@ class SmbComWriteAndX extends AndXServerMessageBlock { int start = dstIndex; dataOffset = (dstIndex - headerStart) + 26; // 26 = off from here to pad -/* - * pad = ( dataOffset - headerStart ) % 4; - * pad = pad == 0 ? 0 : 4 - pad; - * dataOffset += pad; - */ + +pad = ( dataOffset - headerStart ) % 4; +pad = pad == 0 ? 0 : 4 - pad; +dataOffset += pad; writeInt2( fid, dst, dstIndex ); dstIndex += 2; writeInt4( offset, dst, dstIndex ); dstIndex += 4; for( int i = 0; i < 4; i++ ) { - dst[dstIndex++] = (byte)0x00; + dst[dstIndex++] = (byte)0xFF; } writeInt2( writeMode, dst, dstIndex ); dstIndex += 2; @@ -108,11 +111,9 @@ class SmbComWriteAndX extends AndXServerMessageBlock { int writeBytesWireFormat( byte[] dst, int dstIndex ) { int start = dstIndex; -/* Netware doesn't like this - * while( pad-- > 0 ) { - * dst[dstIndex++] = (byte)0x00; - * } - */ +while( pad-- > 0 ) { + dst[dstIndex++] = (byte)0xEE; +} System.arraycopy( b, off, dst, dstIndex, dataLength ); dstIndex += dataLength; diff --git a/src/jcifs/smb/SmbFile.java b/src/jcifs/smb/SmbFile.java index ec5a9d7..8cde3a4 100644 --- a/src/jcifs/smb/SmbFile.java +++ b/src/jcifs/smb/SmbFile.java @@ -26,6 +26,8 @@ import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.security.Principal; import jcifs.Config; import jcifs.util.LogStream; @@ -732,7 +734,17 @@ public class SmbFile extends URLConnection implements SmbConstants { return null; } +UniAddress[] addresses; +int addressIndex; + UniAddress getAddress() throws UnknownHostException { + if (addressIndex == 0) + return getFirstAddress(); + return addresses[addressIndex - 1]; + } + UniAddress getFirstAddress() throws UnknownHostException { + addressIndex = 0; + String host = url.getHost(); String path = url.getPath(); String query = url.getQuery(); @@ -740,27 +752,41 @@ public class SmbFile extends URLConnection implements SmbConstants { if( query != null ) { String server = queryLookup( query, "server" ); if( server != null && server.length() > 0 ) { - return UniAddress.getByName( server ); + addresses = new UniAddress[1]; + addresses[0] = UniAddress.getByName( server ); + return getNextAddress(); } } - if( host.length() == 0 ) { + if (host.length() == 0) { try { NbtAddress addr = NbtAddress.getByName( NbtAddress.MASTER_BROWSER_NAME, 0x01, null); - return UniAddress.getByName( addr.getHostAddress() ); + addresses = new UniAddress[1]; + addresses[0] = UniAddress.getByName( addr.getHostAddress() ); } catch( UnknownHostException uhe ) { NtlmPasswordAuthentication.initDefaults(); if( NtlmPasswordAuthentication.DEFAULT_DOMAIN.equals( "?" )) { throw uhe; } - return UniAddress.getByName( NtlmPasswordAuthentication.DEFAULT_DOMAIN, true ); + addresses = UniAddress.getAllByName( NtlmPasswordAuthentication.DEFAULT_DOMAIN, true ); } } else if( path.length() == 0 || path.equals( "/" )) { - return UniAddress.getByName( host, true ); + addresses = UniAddress.getAllByName( host, true ); } else { - return UniAddress.getByName( host ); + addresses = UniAddress.getAllByName(host, false); } + + return getNextAddress(); + } + UniAddress getNextAddress() { + UniAddress addr = null; + if (addressIndex < addresses.length) + addr = addresses[addressIndex++]; + return addr; + } + boolean hasNextAddress() { + return addressIndex < addresses.length; } void connect0() throws SmbException { try { @@ -773,6 +799,41 @@ public class SmbFile extends URLConnection implements SmbConstants { throw new SmbException( "Failed to connect to server", ioe ); } } + void doConnect() throws IOException { + SmbTransport trans; + SmbSession ssn; + UniAddress addr; + + addr = getAddress(); + trans = SmbTransport.getSmbTransport(addr, url.getPort()); + ssn = trans.getSmbSession(auth); + tree = ssn.getSmbTree(share, null); + + try { + if( log.level >= 3 ) + log.println( "doConnect: " + addr ); + + tree.treeConnect(null, null); + } catch (SmbAuthException sae) { + NtlmPasswordAuthentication a; + + if (share == null) { // IPC$ - try "anonymous" credentials + ssn = trans.getSmbSession(NtlmPasswordAuthentication.NULL); + tree = ssn.getSmbTree(null, null); + tree.treeConnect(null, null); + } else if ((a = NtlmAuthenticator.requestNtlmPasswordAuthentication( + url.toString(), sae)) != null) { + auth = a; + ssn = trans.getSmbSession(auth); + tree = ssn.getSmbTree(share, null); + tree.treeConnect(null, null); + } else { + if (log.level >= 1 && hasNextAddress()) + sae.printStackTrace(log); + throw sae; + } + } + } /** * It is not necessary to call this method directly. This is the * URLConnection implementation of connect(). @@ -787,34 +848,21 @@ public class SmbFile extends URLConnection implements SmbConstants { } getUncPath0(); - addr = getAddress(); - - trans = SmbTransport.getSmbTransport( addr, url.getPort() ); - ssn = trans.getSmbSession( auth ); - tree = ssn.getSmbTree( share, null ); - - try { - tree.treeConnect( null, null ); - } catch( SmbAuthException sae ) { - NtlmPasswordAuthentication a; - - if( share == null ) { // IPC$ - try "anonymous" credentials - ssn = trans.getSmbSession( NtlmPasswordAuthentication.NULL ); - tree = ssn.getSmbTree( null, null ); - tree.treeConnect( null, null ); - } else if(( a = NtlmAuthenticator.requestNtlmPasswordAuthentication( - url.toString(), sae )) != null ) { - auth = a; - ssn = trans.getSmbSession( auth ); - tree = ssn.getSmbTree( share, null ); - tree.treeConnect( null, null ); - } else { - throw sae; + getFirstAddress(); + for ( ;; ) { + try { + doConnect(); + return; + } catch(SmbException se) { + if (getNextAddress() == null) + throw se; + if (log.level >= 3) + se.printStackTrace(log); } } } boolean isConnected() { - return (connected = tree != null && tree.treeConnected); + return tree != null && tree.treeConnected; } int open0( int flags, int access, int attrs, int options ) throws SmbException { int f; @@ -830,8 +878,17 @@ public class SmbFile extends URLConnection implements SmbConstants { if( tree.session.transport.hasCapability( ServerMessageBlock.CAP_NT_SMBS )) { SmbComNTCreateAndXResponse response = new SmbComNTCreateAndXResponse(); - send( new SmbComNTCreateAndX( unc, flags, access, shareAccess, - attrs, options, null ), response ); +SmbComNTCreateAndX request = new SmbComNTCreateAndX( unc, flags, access, shareAccess, attrs, options, null ); +if (this instanceof SmbNamedPipe) { + request.flags0 |= 0x16; + request.desiredAccess |= 0x20000; + response.isExtended = true; +} +try { + send( request, response ); +} catch( Exception e) { + e.printStackTrace(); +} f = response.fid; attributes = response.extFileAttributes & ATTR_GET_MASK; attrExpiration = System.currentTimeMillis() + attrExpirationPeriod; @@ -853,7 +910,8 @@ public class SmbFile extends URLConnection implements SmbConstants { tree_num = tree.tree_num; } boolean isOpen() { - return opened && isConnected() && tree_num == tree.tree_num; + boolean ans = opened && isConnected() && tree_num == tree.tree_num; + return ans; } void close( int f, long lastWriteTime ) throws SmbException { @@ -1148,7 +1206,7 @@ public class SmbFile extends URLConnection implements SmbConstants { } else { type = TYPE_SHARE; } - } else if( url.getAuthority().length() == 0 ) { + } else if( url.getAuthority() == null || url.getAuthority().length() == 0 ) { type = TYPE_WORKGROUP; } else { UniAddress addr; @@ -1568,127 +1626,221 @@ public class SmbFile extends URLConnection implements SmbConstants { String[] list( String wildcard, int searchAttributes, SmbFilenameFilter fnf, SmbFileFilter ff ) throws SmbException { ArrayList list = new ArrayList(); - - try { - int hostlen = url.getHost().length(); - if( hostlen == 0 || share == null ) { - boolean done = false; - if (hostlen != 0 && getType() == TYPE_SERVER) { - try { - doMsrpcEnum(list, false, wildcard, searchAttributes, fnf, ff); - done = true; - } catch(IOException ioe) { - if (log.level >= 3) - ioe.printStackTrace(log); - } - } - if (!done) - doNetEnum( list, false, wildcard, searchAttributes, fnf, ff ); - } else { - doFindFirstNext( list, false, wildcard, searchAttributes, fnf, ff ); - } - } catch( UnknownHostException uhe ) { - throw new SmbException( url.toString(), uhe ); - } catch( MalformedURLException mue ) { - throw new SmbException( url.toString(), mue ); - } - + doEnum(list, false, wildcard, searchAttributes, fnf, ff); return (String[])list.toArray(new String[list.size()]); } SmbFile[] listFiles( String wildcard, int searchAttributes, SmbFilenameFilter fnf, SmbFileFilter ff ) throws SmbException { ArrayList list = new ArrayList(); - - if( ff != null && ff instanceof DosFileFilter ) { + doEnum(list, true, wildcard, searchAttributes, fnf, ff); + return (SmbFile[])list.toArray(new SmbFile[list.size()]); + } + void doEnum(ArrayList list, + boolean files, + String wildcard, + int searchAttributes, + SmbFilenameFilter fnf, + SmbFileFilter ff) throws SmbException { + if (ff != null && ff instanceof DosFileFilter) { DosFileFilter dff = (DosFileFilter)ff; - if( dff.wildcard != null ) { + if (dff.wildcard != null) wildcard = dff.wildcard; - } searchAttributes = dff.attributes; } try { int hostlen = url.getHost().length(); - if( hostlen == 0 || share == null ) { - boolean done = false; - if (hostlen != 0 && getType() == TYPE_SERVER) { - try { - doMsrpcEnum(list, true, wildcard, searchAttributes, fnf, ff); - done = true; - } catch(IOException ioe) { - if (log.level >= 3) - ioe.printStackTrace(log); - } - } - if (!done) - doNetEnum( list, true, wildcard, searchAttributes, fnf, ff ); + if (hostlen == 0 || getType() == TYPE_WORKGROUP) { + doNetServerEnum(list, files, wildcard, searchAttributes, fnf, ff); + } else if (share == null) { + doShareEnum(list, files, wildcard, searchAttributes, fnf, ff); } else { - doFindFirstNext( list, true, wildcard, searchAttributes, fnf, ff ); + doFindFirstNext(list, files, wildcard, searchAttributes, fnf, ff); } - } catch( UnknownHostException uhe ) { - throw new SmbException( url.toString(), uhe ); - } catch( MalformedURLException mue ) { - throw new SmbException( url.toString(), mue ); + } catch (UnknownHostException uhe) { + throw new SmbException(url.toString(), uhe); + } catch (MalformedURLException mue) { + throw new SmbException(url.toString(), mue); } - - return (SmbFile[])list.toArray(new SmbFile[list.size()]); } - void doMsrpcEnum( ArrayList list, + void doShareEnum(ArrayList list, boolean files, String wildcard, int searchAttributes, SmbFilenameFilter fnf, - SmbFileFilter ff ) throws IOException, - UnknownHostException, - MalformedURLException { + SmbFileFilter ff) throws SmbException, + UnknownHostException, + MalformedURLException { String p = url.getPath(); - MsrpcShareEnum rpc; - DcerpcHandle handle; + IOException last = null; + FileEntry[] entries; + UniAddress addr; + FileEntry e; + HashMap map; - if( p.lastIndexOf( '/' ) != ( p.length() - 1 )) { - throw new SmbException( url.toString() + " directory must end with '/'" ); - } + if (p.lastIndexOf('/') != (p.length() - 1)) + throw new SmbException(url.toString() + " directory must end with '/'"); if (getType() != TYPE_SERVER) - throw new SmbException( "The requested list operations is invalid: " + url.toString() ); + throw new SmbException("The requested list operations is invalid: " + url.toString()); + + map = new HashMap(); + + addr = getFirstAddress(); + while (addr != null) { + try { + doConnect(); + try { + entries = doMsrpcShareEnum(); + } catch(IOException ioe) { + if (log.level >= 3) + ioe.printStackTrace(log); + entries = doNetShareEnum(); + } + for (int ei = 0; ei < entries.length; ei++) { + e = entries[ei]; + if (map.containsKey(e) == false) + map.put(e, e); + } + } catch(IOException ioe) { + if (log.level >= 3) + ioe.printStackTrace(log); + last = ioe; + } + addr = getNextAddress(); + } + + if (last != null && map.isEmpty()) { + if (last instanceof SmbException == false) + throw new SmbException(url.toString(), last); + throw (SmbException)last; + } + + Iterator iter = map.keySet().iterator(); + while (iter.hasNext()) { + e = (FileEntry)iter.next(); + String name = e.getName(); + if (fnf != null && fnf.accept(this, name) == false) + continue; + if (name.length() > 0) { + // if !files we don't need to create SmbFiles here + SmbFile f = new SmbFile(this, name, e.getType(), + ATTR_READONLY | ATTR_DIRECTORY, 0L, 0L, 0L ); + if (ff != null && ff.accept(f) == false) + continue; + if (files) { + list.add(f); + } else { + list.add(name); + } + } + } + } + FileEntry[] doMsrpcShareEnum() throws IOException { + MsrpcShareEnum rpc; + DcerpcHandle handle; rpc = new MsrpcShareEnum(url.getHost()); - handle = DcerpcHandle.getHandle("ncacn_np:" + url.getHost() + "[\\PIPE\\srvsvc]", auth); + + /* JCIFS will build a composite list of shares if the target host has + * multiple IP addresses such as when domain-based DFS is in play. Because + * of this, to ensure that we query each IP individually without re-resolving + * the hostname and getting a different IP, we must use the current addresses + * IP rather than just url.getHost() like we were using prior to 1.2.16. + */ + + handle = DcerpcHandle.getHandle("ncacn_np:" + + getAddress().getHostAddress() + + "[\\PIPE\\srvsvc]", auth); try { handle.sendrecv(rpc); if (rpc.retval != 0) throw new SmbException(rpc.retval, true); - FileEntry[] entries = rpc.getEntries(); - for( int i = 0; i < entries.length; i++ ) { - FileEntry e = entries[i]; + return rpc.getEntries(); + } finally { + try { + handle.close(); + } catch(IOException ioe) { + if (log.level >= 4) + ioe.printStackTrace(log); + } + } + } + FileEntry[] doNetShareEnum() throws SmbException { + SmbComTransaction req = new NetShareEnum(); + SmbComTransactionResponse resp = new NetShareEnumResponse(); + + send(req, resp); + + if (resp.status != SmbException.ERROR_SUCCESS) + throw new SmbException(resp.status, true); + + return resp.results; + } + void doNetServerEnum(ArrayList list, + boolean files, + String wildcard, + int searchAttributes, + SmbFilenameFilter fnf, + SmbFileFilter ff) throws SmbException, + UnknownHostException, + MalformedURLException { + int listType = url.getHost().length() == 0 ? 0 : getType(); + SmbComTransaction req; + SmbComTransactionResponse resp; + + if (listType == 0) { + connect0(); + req = new NetServerEnum2(tree.session.transport.server.oemDomainName, + NetServerEnum2.SV_TYPE_DOMAIN_ENUM ); + resp = new NetServerEnum2Response(); + } else if (listType == TYPE_WORKGROUP) { + req = new NetServerEnum2(url.getHost(), NetServerEnum2.SV_TYPE_ALL); + resp = new NetServerEnum2Response(); + } else { + throw new SmbException( "The requested list operations is invalid: " + url.toString() ); + } + + boolean more; + do { + int n; + + send(req, resp); + + if (resp.status != SmbException.ERROR_SUCCESS && + resp.status != SmbException.ERROR_MORE_DATA) { + throw new SmbException( resp.status, true ); + } + more = resp.status == SmbException.ERROR_MORE_DATA; + + n = more ? resp.numEntries - 1 : resp.numEntries; + for (int i = 0; i < n; i++) { + FileEntry e = resp.results[i]; String name = e.getName(); - if( fnf != null && fnf.accept( this, name ) == false ) { + if (fnf != null && fnf.accept(this, name) == false) continue; - } - if( name.length() > 0 ) { - SmbFile f = new SmbFile( this, name, - e.getType(), + if (name.length() > 0) { + // if !files we don't need to create SmbFiles here + SmbFile f = new SmbFile(this, name, e.getType(), ATTR_READONLY | ATTR_DIRECTORY, 0L, 0L, 0L ); - if( ff != null && ff.accept( f ) == false ) { + if (ff != null && ff.accept(f) == false) continue; - } - if( files ) { - list.add( f ); + if (files) { + list.add(f); } else { - list.add( name ); + list.add(name); } } } - } finally { - try { - handle.close(); - } catch(IOException ioe) { - if (log.level >= 4) - ioe.printStackTrace(log); + if (getType() != TYPE_WORKGROUP) { + break; } - } + req.subCommand = (byte)SmbComTransaction.NET_SERVER_ENUM3; + req.reset(0, ((NetServerEnum2Response)resp).lastName); + resp.reset(); + } while(more); } - void doNetEnum( ArrayList list, + void doNetEnumX( ArrayList list, boolean files, String wildcard, int searchAttributes, diff --git a/src/jcifs/smb/SmbFileInputStream.java b/src/jcifs/smb/SmbFileInputStream.java index 0e06adf..bd75f90 100644 --- a/src/jcifs/smb/SmbFileInputStream.java +++ b/src/jcifs/smb/SmbFileInputStream.java @@ -153,7 +153,11 @@ public class SmbFileInputStream extends InputStream { file.log.println( "read: len=" + len + ",r=" + r + ",fp=" + fp ); try { - file.send( new SmbComReadAndX( file.fid, fp, r, null ), response ); +SmbComReadAndX request = new SmbComReadAndX( file.fid, fp, r, null ); +if( file.type == SmbFile.TYPE_NAMED_PIPE ) { + request.minCount = request.maxCount = request.remaining = 1024; +} + file.send( request, response ); } catch( SmbException se ) { if( file.type == SmbFile.TYPE_NAMED_PIPE && se.getNtStatus() == NtStatus.NT_STATUS_PIPE_BROKEN ) { diff --git a/src/jcifs/smb/SmbFileOutputStream.java b/src/jcifs/smb/SmbFileOutputStream.java index cfe9934..ccf6800 100644 --- a/src/jcifs/smb/SmbFileOutputStream.java +++ b/src/jcifs/smb/SmbFileOutputStream.java @@ -187,6 +187,15 @@ write, and/or delete the file while the jCIFS user has the file open. write( b, 0, b.length ); } + void ensureOpen() throws IOException { + // ensure file is open + if( file.isOpen() == false ) { + file.open( openFlags, access | SmbConstants.FILE_WRITE_DATA, SmbFile.ATTR_NORMAL, 0 ); + if( append ) { + fp = file.length(); + } + } + } /** * Writes len bytes from the specified byte array starting at * offset off to this file output stream. @@ -196,6 +205,16 @@ write, and/or delete the file while the jCIFS user has the file open. */ public void write( byte[] b, int off, int len ) throws IOException { + if( file.isOpen() == false && file instanceof SmbNamedPipe ) { + file.send( new TransWaitNamedPipe( "\\pipe" + file.unc ), + new TransWaitNamedPipeResponse() ); + } + writeDirect( b, off, len, 0 ); + } +/** + * Just bypasses TransWaitNamedPipe - used by DCERPC bind. + */ + public void writeDirect( byte[] b, int off, int len, int flags ) throws IOException { if( len <= 0 ) { return; } @@ -203,17 +222,7 @@ write, and/or delete the file while the jCIFS user has the file open. if( tmp == null ) { throw new IOException( "Bad file descriptor" ); } - // ensure file is open - if( file.isOpen() == false ) { - if( file instanceof SmbNamedPipe ) { - file.send( new TransWaitNamedPipe( "\\pipe" + file.unc ), - new TransWaitNamedPipeResponse() ); - } - file.open( openFlags, access | SmbConstants.FILE_WRITE_DATA, SmbFile.ATTR_NORMAL, 0 ); - if( append ) { - fp = file.length(); - } - } + ensureOpen(); if( file.log.level >= 4 ) file.log.println( "write: fid=" + file.fid + ",off=" + off + ",len=" + len ); @@ -223,6 +232,12 @@ write, and/or delete the file while the jCIFS user has the file open. w = len > writeSize ? writeSize : len; if( useNTSmbs ) { reqx.setParam( file.fid, fp, len - w, b, off, w ); +if ((flags & 1) != 0) { + reqx.setParam( file.fid, fp, len, b, off, w ); + reqx.writeMode = 0x8; +} else { + reqx.writeMode = 0; +} file.send( reqx, rspx ); fp += rspx.count; len -= rspx.count; diff --git a/src/jcifs/smb/SmbShareInfo.java b/src/jcifs/smb/SmbShareInfo.java new file mode 100644 index 0000000..ac71f25 --- /dev/null +++ b/src/jcifs/smb/SmbShareInfo.java @@ -0,0 +1,74 @@ +/* jcifs smb client library in Java + * Copyright (C) 2007 "Michael B. Allen" + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +package jcifs.smb; + +import jcifs.util.Hexdump; + +public class SmbShareInfo implements FileEntry { + + protected String netName; + protected int type; + protected String remark; + + public String getName() { + return netName; + } + public int getType() { + /* 0x80000000 means hidden but SmbFile.isHidden() checks for $ at end + */ + switch (type & 0xFFFF) { + case 1: + return SmbFile.TYPE_PRINTER; + case 3: + return SmbFile.TYPE_NAMED_PIPE; + } + return SmbFile.TYPE_SHARE; + } + public int getAttributes() { + return SmbFile.ATTR_READONLY | SmbFile.ATTR_DIRECTORY; + } + public long createTime() { + return 0L; + } + public long lastModified() { + return 0L; + } + public long length() { + return 0L; + } + + public boolean equals(Object obj) { + if (obj instanceof SmbShareInfo) { + SmbShareInfo si = (SmbShareInfo)obj; + return netName.equals(si.netName); + } + return false; + } + public int hashCode() { + int hashCode = netName.hashCode(); + return hashCode; + } + + public String toString() { + return new String( "SmbShareInfo[" + + "netName=" + netName + + ",type=0x" + Hexdump.toHexString( type, 8 ) + + ",remark=" + remark + "]" ); + } +} diff --git a/src/jcifs/smb/SmbTransport.java b/src/jcifs/smb/SmbTransport.java index 9712b43..208b941 100644 --- a/src/jcifs/smb/SmbTransport.java +++ b/src/jcifs/smb/SmbTransport.java @@ -230,7 +230,7 @@ public class SmbTransport extends Transport implements SmbConstants { * is a policy regarding which hosts a user can connect from. This * requires communicating over port 139 rather than 445. */ - if (NETBIOS_HOSTNAME != null && NETBIOS_HOSTNAME.equals( "" ) == false) { + if (false && NETBIOS_HOSTNAME != null && NETBIOS_HOSTNAME.equals( "" ) == false) { port = 139; } if (port == 139) { diff --git a/src/jcifs/smb/SmbTree.java b/src/jcifs/smb/SmbTree.java index 131a557..4319652 100644 --- a/src/jcifs/smb/SmbTree.java +++ b/src/jcifs/smb/SmbTree.java @@ -95,7 +95,7 @@ class SmbTree { } } request.tid = tid; - if( inDfs && request.path != null && request.path.length() > 0 ) { + if( inDfs && !service.equals("IPC") && request.path != null && request.path.length() > 0 ) { /* When DFS is in action all request paths are * full UNC paths minus the first backslash like * \server\share\path\to\file diff --git a/src/jcifs/smb/TransactNamedPipeOutputStream.java b/src/jcifs/smb/TransactNamedPipeOutputStream.java index f94375e..9a0e8ab 100644 --- a/src/jcifs/smb/TransactNamedPipeOutputStream.java +++ b/src/jcifs/smb/TransactNamedPipeOutputStream.java @@ -21,7 +21,7 @@ package jcifs.smb; import java.io.OutputStream; import java.io.IOException; -class TransactNamedPipeOutputStream extends OutputStream { +class TransactNamedPipeOutputStream extends SmbFileOutputStream { private String path; private SmbNamedPipe pipe; @@ -29,6 +29,7 @@ class TransactNamedPipeOutputStream extends OutputStream { private boolean dcePipe; TransactNamedPipeOutputStream( SmbNamedPipe pipe ) throws IOException { + super(pipe, false, (pipe.pipeType & 0xFFFF00FF) | SmbFile.O_EXCL); this.pipe = pipe; this.dcePipe = ( pipe.pipeType & SmbNamedPipe.PIPE_TYPE_DCE_TRANSACT ) == SmbNamedPipe.PIPE_TYPE_DCE_TRANSACT; path = pipe.unc; @@ -56,10 +57,7 @@ class TransactNamedPipeOutputStream extends OutputStream { new TransCallNamedPipeResponse( pipe )); } else if(( pipe.pipeType & SmbNamedPipe.PIPE_TYPE_TRANSACT ) == SmbNamedPipe.PIPE_TYPE_TRANSACT ) { - pipe.open((pipe.pipeType & 0xFF) | SmbFile.O_EXCL, - pipe.pipeType >>> 16, - SmbFile.ATTR_NORMAL, - 0); + ensureOpen(); TransTransactNamedPipe req = new TransTransactNamedPipe( pipe.fid, b, off, len ); if (dcePipe) { req.maxDataCount = 1024; -- 2.11.0