+Tue Aug 4 14:31:47 EDT 2009
+jcifs-1.3.12c
+
+If NtlmPasswordAuthentication.ANONYMOUS was used, CAP_EXTENDED_SECURITY
+could be incorrectly turned off resulting in a NullPointerException in
+SmbComSessionSetupAndX.java. If a DC does not return any domain referrals,
+a NullPointerException could occur. Both of these NPEs have been fixed.
+
Tue Jul 21 11:19:39 EDT 2009
jcifs-1.3.11
<project name="jcifs" default="usage" basedir=".">
- <property name="version" value="1.3.11"/>
- <property name="reldate" value="Jul 21, 2009"/>
+ <property name="version" value="1.3.12c"/>
+ <property name="reldate" value="Aug 4, 2009"/>
<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
RUN="${JAVA_HOME}/bin/java -cp ${CLASSPATH} -Djcifs.properties=${PROPERTIES}"
#SERVER=192.168.2.110
-#SERVER=dc1.w.net
-#SHARE=tmp
-#DIR=test
+SERVER=dc1.w.net
+SHARE=tmp
+DIR=test
# Domain-based DFS
#SERVER=192.168.2.110
-SERVER=w.net
-SHARE=root2
-DIR=test
+#SERVER=w.net
+#SHARE=root2
+#DIR=test
# smb://fs1.w.net/DFSStandaloneRoot/DFSStandaloneLink/test/
# smb://dc1.w.net/root2/link2/test/
CacheEntry entry = new CacheEntry(Dfs.TTL * 10L);
DfsReferral dr = trans.getDfsReferrals(auth, "", 0);
- DfsReferral start = dr;
- do {
- String domain = dr.server.toLowerCase();
- entry.map.put(domain, new HashMap());
- dr = dr.next;
- } while (dr != start);
-
- _domains = entry;
- return _domains.map;
+ if (dr != null) {
+ DfsReferral start = dr;
+ do {
+ String domain = dr.server.toLowerCase();
+ entry.map.put(domain, new HashMap());
+ dr = dr.next;
+ } while (dr != start);
+
+ _domains = entry;
+ return _domains.map;
+ }
} catch (IOException ioe) {
if (log.level >= 3)
ioe.printStackTrace(log);
Config.getBoolean( "jcifs.smb.client.disablePlainTextPasswords", true );
private byte[] lmHash, ntHash, blob = null;
- private int sessionKey;
+ private int sessionKey, capabilities;
private String accountName, primaryDomain;
SmbSession session;
this.cred = cred;
sessionKey = session.transport.sessionKey;
+ capabilities = session.transport.capabilities;
if (session.transport.server.security == SECURITY_USER) {
if (cred instanceof NtlmPasswordAuthentication) {
if (auth == NtlmPasswordAuthentication.ANONYMOUS) {
lmHash = new byte[0];
ntHash = new byte[0];
+ capabilities &= ~SmbConstants.CAP_EXTENDED_SECURITY;
} else if (session.transport.server.encryptedPasswords) {
lmHash = auth.getAnsiHash( session.transport.server.encryptionKey );
ntHash = auth.getUnicodeHash( session.transport.server.encryptionKey );
dst[dstIndex++] = (byte)0x00;
dst[dstIndex++] = (byte)0x00;
dst[dstIndex++] = (byte)0x00;
- writeInt4( session.transport.capabilities, dst, dstIndex );
+ writeInt4( capabilities, dst, dstIndex );
dstIndex += 4;
return dstIndex - start;
",sessionKey=" + sessionKey +
",lmHash.length=" + (lmHash == null ? 0 : lmHash.length) +
",ntHash.length=" + (ntHash == null ? 0 : ntHash.length) +
- ",capabilities=" + session.transport.capabilities +
+ ",capabilities=" + capabilities +
",accountName=" + accountName +
",primaryDomain=" + primaryDomain +
",NATIVE_OS=" + session.transport.NATIVE_OS +
do {
switch (state) {
case 10: /* NTLM */
- if (auth == NtlmPasswordAuthentication.ANONYMOUS)
- transport.capabilities &= ~SmbConstants.CAP_EXTENDED_SECURITY;
-
- if (transport.hasCapability(SmbConstants.CAP_EXTENDED_SECURITY)) {
+ if (auth != NtlmPasswordAuthentication.ANONYMOUS &&
+ transport.hasCapability(SmbConstants.CAP_EXTENDED_SECURITY)) {
state = 20; /* NTLMSSP */
break;
}