Fix failing SSL test
authormarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 23 Nov 2009 00:11:11 +0000 (00:11 +0000)
committermarkt <markt@13f79535-47bb-0310-9956-ffa450edef68>
Mon, 23 Nov 2009 00:11:11 +0000 (00:11 +0000)
Prevent NPE in NIO connector when using SSL and the default keystore password

git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@883196 13f79535-47bb-0310-9956-ffa450edef68

java/org/apache/tomcat/util/net/AbstractEndpoint.java
java/org/apache/tomcat/util/net/NioEndpoint.java
java/org/apache/tomcat/util/net/jsse/JSSESocketFactory.java

index 89e0843..7796e71 100644 (file)
@@ -26,6 +26,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.IntrospectionUtils;
+import org.apache.tomcat.util.net.jsse.JSSESocketFactory;
 import org.apache.tomcat.util.res.StringManager;
 import org.apache.tomcat.util.threads.ResizableExecutor;
 import org.apache.tomcat.util.threads.TaskQueue;
@@ -503,7 +504,7 @@ public abstract class AbstractEndpoint {
     public String getKeyAlias() { return keyAlias;}
     public void setKeyAlias(String s ) { keyAlias = s;}
     
-    private String keyPass = "changeit";
+    private String keyPass = JSSESocketFactory.DEFAULT_KEY_PASS;
     public String getKeyPass() { return keyPass;}
     public void setKeyPass(String s ) { this.keyPass = s;}
 
index 99885fd..808808f 100644 (file)
@@ -53,6 +53,7 @@ import org.apache.juli.logging.Log;
 import org.apache.juli.logging.LogFactory;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.apache.tomcat.util.net.SecureNioChannel.ApplicationBufferHandler;
+import org.apache.tomcat.util.net.jsse.JSSESocketFactory;
 import org.apache.tomcat.util.net.jsse.NioX509KeyManager;
 
 /**
@@ -504,7 +505,11 @@ public class NioEndpoint extends AbstractEndpoint {
         // Initialize SSL if needed
         if (isSSLEnabled()) {
             // Initialize SSL
-            char[] passphrase = getKeystorePass().toCharArray();
+            String keystorePass = getKeystorePass();
+            if (keystorePass == null) {
+                keystorePass = JSSESocketFactory.DEFAULT_KEY_PASS;
+            }
+            char[] passphrase = keystorePass.toCharArray();
 
             char[] tpassphrase = (getTruststorePass()!=null)?getTruststorePass().toCharArray():passphrase;
             String ttype = (getTruststoreType()!=null)?getTruststoreType():getKeystoreType();
index 7d1bddd..a6d54e8 100644 (file)
@@ -84,15 +84,15 @@ public class JSSESocketFactory
     private static final StringManager sm =
         StringManager.getManager("org.apache.tomcat.util.net.jsse.res");
 
-    // defaults
+    // Defaults - made public where re-used
     static String defaultProtocol = "TLS";
     static boolean defaultClientAuth = false;
     static String defaultKeystoreType = "JKS";
     private static final String defaultKeystoreFile
         = System.getProperty("user.home") + "/.keystore";
-    private static final String defaultKeyPass = "changeit";
     private static final int defaultSessionCacheSize = 0;
     private static final int defaultSessionTimeout = 86400;
+    public static final String DEFAULT_KEY_PASS = "changeit";
     
     static final org.apache.juli.logging.Log log =
         org.apache.juli.logging.LogFactory.getLog(JSSESocketFactory.class);
@@ -259,7 +259,7 @@ public class JSSESocketFactory
         String keyPass = (String)attributes.get(
                 AbstractEndpoint.SSL_ATTR_KEY_PASS);
         if (keyPass == null) {
-            keyPass = defaultKeyPass;
+            keyPass = DEFAULT_KEY_PASS;
         }
         String keystorePass = (String)attributes.get(
                 AbstractEndpoint.SSL_ATTR_KEYSTORE_PASS);