From: Felix Schumacher Date: Wed, 6 Aug 2008 14:48:05 +0000 (+0200) Subject: jcifs 1.2.23 from tgz X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=829489df812b6c89db247286d46904ed884a41b9;p=jcifs_without_docs.git jcifs 1.2.23 from tgz Sun Jul 20 22:28:40 EDT 2008 jcifs-1.2.23 Recent domain-based DFS proper broke stand-alone DFS. This has been fixed. --- diff --git a/README.txt b/README.txt index c2b2b27..cded897 100644 --- a/README.txt +++ b/README.txt @@ -1,3 +1,8 @@ +Sun Jul 20 22:28:40 EDT 2008 +jcifs-1.2.23 + +Recent domain-based DFS proper broke stand-alone DFS. This has been fixed. + Wed Jun 25 20:26:33 EDT 2008 jcifs-1.2.22 diff --git a/build.xml b/build.xml index 5943d4d..ec78884 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/runtests.sh b/examples/runtests.sh index fd592b3..4c83ba3 100644 --- a/examples/runtests.sh +++ b/examples/runtests.sh @@ -2,15 +2,25 @@ JAVA_HOME=/usr/local/java CLASSPATH=../build:. -PROPERTIES=../../user1.prp +PROPERTIES=../../user2.prp RUN="${JAVA_HOME}/bin/java -cp ${CLASSPATH} -Djcifs.properties=${PROPERTIES}" -SERVER=dc1.w.net -SHARE=tmp -WRITE_DIR=test/ -SRC_DIR=test/Junk -FILE1=test/Junk/10883563.doc +#SERVER=dc1.w.net +#SHARE=tmp +#DIR=test +# Domain-based DFS +#SHARE=root2 +#DIR=link2/test + +# Stand-alone DFS +SERVER=fs1.w.net +SHARE=standalone +DIR=sub1/dc1tmp/test + +WRITE_DIR=${DIR}/ +SRC_DIR=${DIR}/Junk +FILE1=${DIR}/Junk/10883563.doc URL_SERVER=smb://${SERVER}/ URL_SHARE=${URL_SERVER}${SHARE}/ URL_WRITE_DIR=${URL_SHARE}${WRITE_DIR} @@ -27,7 +37,7 @@ $RUN GetSecurity ${URL_SHARE} $RUN GetShareSecurity ${URL_WRITE_DIR} $RUN SidCrawler ${URL_WRITE_DIR} 5 $RUN GetGroupMemberSidsFromURL ${URL_WRITE_DIR} -$RUN InterruptTest ${URL_WRITE_DIR}${FILE1} +$RUN InterruptTest ${URL_SHARE}${FILE1} $RUN AllocInfo ${URL_SHARE} $RUN Append ${URL_WRITE_DIR}Append.txt $RUN AuthListFiles smb://bogus\@${SERVER}/${SHARE}/ diff --git a/src/jcifs/smb/Dfs.java b/src/jcifs/smb/Dfs.java index 5f7700a..1c0af43 100644 --- a/src/jcifs/smb/Dfs.java +++ b/src/jcifs/smb/Dfs.java @@ -203,8 +203,6 @@ public class Dfs { } if (dr == null && path != null) { - /* The referrals map is for stand-alone roots - */ if (referrals != null && now > referrals.expiration) { referrals = null; } @@ -212,13 +210,25 @@ public class Dfs { referrals = new CacheEntry(0); } String key = "\\" + domain + "\\" + root; - if (path.equals("\\") == false) { - int s1 = path.indexOf('\\', 1); - if (s1 > 0) - path = path.substring(0, s1); + if (path.equals("\\") == false) key += path; + key = key.toLowerCase(); + + Iterator iter = referrals.map.keySet().iterator(); + while (iter.hasNext()) { + String _key = (String)iter.next(); + int _klen = _key.length(); + boolean match = false; + + if (_klen == key.length()) { + match = _key.equals(key); + } else if (_klen < key.length()) { + match = _key.regionMatches(0, key, 0, _klen) && key.charAt(_klen) == '\\'; + } + + if (match) + dr = (DfsReferral)referrals.map.get(_key); } - dr = (DfsReferral)referrals.map.get(key.toLowerCase()); } return dr; @@ -236,6 +246,10 @@ public class Dfs { share = path.substring(s1 + 1, s2); key = path.substring(0, dr.pathConsumed).toLowerCase(); + /* Subtract the server and share from the pathConsumed so that + * it refects the part of the relative path consumed and not + * the entire path. + */ dr.pathConsumed -= 1 + server.length() + 1 + share.length(); if (referrals != null && (System.currentTimeMillis() + 10000) > referrals.expiration) {