+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
<project name="jcifs" default="usage" basedir=".">
- <property name="version" value="1.2.22"/>
- <property name="reldate" value="Jun 25, 2008"/>
+ <property name="version" value="1.2.23"/>
+ <property name="reldate" value="Jul 21, 2008"/>
<target name="usage">
<echo>
--- /dev/null
+C:\tmp>ktpass /princ HTTP/www.foo.net@WIN.NET /ptype KRB5_NT_PRINCIPAL /desonly /pass asj7j112233hh4455 /mapuser test2\r
+Targeting domain controller: ts0.win.net\r
+Using legacy password setting method\r
+Successfully mapped HTTP/www.foo.net to test2.\r
+Key created.\r
+Account test2 has been set for DES-only encryption.
\ No newline at end of file
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}
$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}/
}
if (dr == null && path != null) {
- /* The referrals map is for stand-alone roots
- */
if (referrals != null && now > referrals.expiration) {
referrals = null;
}
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;
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) {