Author: fhanik Date: Tue Jan 11 17:28:05 2011 New Revision: 1057743 URL: http://svn.apache.org/viewvc?rev=1057743&view=rev Log: Mask the password through all the JMX operations
Added: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolUtilities.java (with props) tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/JmxPasswordTest.java (with props) Modified: tomcat/trunk/modules/jdbc-pool/build.properties.default tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java tomcat/trunk/modules/jdbc-pool/sign.sh tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/Async0IdleTestBug50477.java Modified: tomcat/trunk/modules/jdbc-pool/build.properties.default URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/build.properties.default?rev=1057743&r1=1057742&r2=1057743&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/build.properties.default (original) +++ tomcat/trunk/modules/jdbc-pool/build.properties.default Tue Jan 11 17:28:05 2011 @@ -28,7 +28,7 @@ version.major=1 version.minor=0 version.build=9 -version.patch=1 +version.patch=2 version.suffix= # ----- Default Base Path for Dependent Packages ----- Added: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolUtilities.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolUtilities.java?rev=1057743&view=auto ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolUtilities.java (added) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolUtilities.java Tue Jan 11 17:28:05 2011 @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomcat.jdbc.pool; + +import java.util.Properties; + +/** + * + * @author fhanik + * + */ +public class PoolUtilities { + + public static final String PROP_USER = "user"; + + public static final String PROP_PASSWORD = "password"; + + public static Properties clone(Properties p) { + Properties c = new Properties(); + c.putAll(p); + return c; + } + + public static Properties cloneWithoutPassword(Properties p) { + Properties result = clone(p); + result.remove(PROP_PASSWORD); + return result; + } +} Propchange: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PoolUtilities.java ------------------------------------------------------------------------------ svn:eol-style = native Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java?rev=1057743&r1=1057742&r2=1057743&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/PooledConnection.java Tue Jan 11 17:28:05 2011 @@ -41,9 +41,9 @@ public class PooledConnection { */ private static final Log log = LogFactory.getLog(PooledConnection.class); - public static final String PROP_USER = "user"; + public static final String PROP_USER = PoolUtilities.PROP_USER; - public static final String PROP_PASSWORD = "password"; + public static final String PROP_PASSWORD = PoolUtilities.PROP_PASSWORD; /** * Validate when connection is borrowed flag @@ -61,7 +61,6 @@ public class PooledConnection { * Validate when connection is initialized flag */ public static final int VALIDATE_INIT = 4; - /** * The properties for the connection pool */ @@ -260,7 +259,7 @@ public class PooledConnection { pwd = poolProperties.getPassword(); getAttributes().put(PROP_PASSWORD, pwd); } - Properties properties = clone(poolProperties.getDbProperties()); + Properties properties = PoolUtilities.clone(poolProperties.getDbProperties()); if (usr != null) properties.setProperty(PROP_USER, usr); if (pwd != null) properties.setProperty(PROP_PASSWORD, pwd); @@ -287,12 +286,6 @@ public class PooledConnection { } } - private Properties clone(Properties p) { - Properties c = new Properties(); - c.putAll(p); - return c; - } - /** * * @return true if connect() was called successfully and disconnect has not yet been called Modified: tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java?rev=1057743&r1=1057742&r2=1057743&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java (original) +++ tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/jmx/ConnectionPool.java Tue Jan 11 17:28:05 2011 @@ -29,6 +29,7 @@ import javax.management.NotificationList import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; import org.apache.tomcat.jdbc.pool.PoolConfiguration; +import org.apache.tomcat.jdbc.pool.PoolUtilities; import org.apache.tomcat.jdbc.pool.Validator; import org.apache.tomcat.jdbc.pool.PoolProperties.InterceptorDefinition; @@ -184,7 +185,7 @@ public class ConnectionPool extends Noti } public Properties getDbProperties() { - return getPoolProperties().getDbProperties(); + return PoolUtilities.cloneWithoutPassword(getPoolProperties().getDbProperties()); } public String getDefaultCatalog() { Modified: tomcat/trunk/modules/jdbc-pool/sign.sh URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/sign.sh?rev=1057743&r1=1057742&r2=1057743&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/sign.sh (original) +++ tomcat/trunk/modules/jdbc-pool/sign.sh Tue Jan 11 17:28:05 2011 @@ -15,7 +15,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -VERSION=v1.0.9.1 +VERSION=v1.0.9.2 for i in $(find output/release/$VERSION -name "*.zip" -o -name "*.tar.gz"); do echo Signing $i echo $1|gpg --passphrase-fd 0 -a -b $i Modified: tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/Async0IdleTestBug50477.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/Async0IdleTestBug50477.java?rev=1057743&r1=1057742&r2=1057743&view=diff ============================================================================== --- tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/Async0IdleTestBug50477.java (original) +++ tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/Async0IdleTestBug50477.java Tue Jan 11 17:28:05 2011 @@ -1,4 +1,3 @@ - /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with Added: tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/JmxPasswordTest.java URL: http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/JmxPasswordTest.java?rev=1057743&view=auto ============================================================================== --- tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/JmxPasswordTest.java (added) +++ tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/JmxPasswordTest.java Tue Jan 11 17:28:05 2011 @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.tomcat.jdbc.test; + +import java.lang.management.ManagementFactory; +import java.util.Hashtable; +import java.util.Properties; + +import javax.management.JMX; +import javax.management.MBeanServer; +import javax.management.ObjectName; + +import org.apache.tomcat.jdbc.pool.ConnectionPool; +import org.apache.tomcat.jdbc.pool.PoolUtilities; +import org.apache.tomcat.jdbc.pool.jmx.ConnectionPoolMBean; +import org.apache.tomcat.jdbc.test.driver.Driver; + +public class JmxPasswordTest extends DefaultTestCase{ + public static final String password = "password"; + public static final String username = "username"; + public static ObjectName oname = null; + + public JmxPasswordTest(String s) { + super(s); + } + + @Override + public void setUp() throws Exception { + super.setUp(); + this.datasource.setDriverClassName(Driver.class.getName()); + this.datasource.setUrl("jdbc:tomcat:test"); + this.datasource.setPassword(password); + this.datasource.setUsername(username); + this.datasource.getConnection().close(); + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + String domain = "tomcat.jdbc"; + Hashtable<String,String> properties = new Hashtable<String,String>(); + properties.put("type", "ConnectionPool"); + properties.put("class", this.getClass().getName()); + oname = new ObjectName(domain,properties); + ConnectionPool pool = datasource.createPool(); + org.apache.tomcat.jdbc.pool.jmx.ConnectionPool jmxPool = new org.apache.tomcat.jdbc.pool.jmx.ConnectionPool(pool); + mbs.registerMBean(jmxPool, oname); + + } + + public void testPassword() throws Exception { + assertEquals("Passwords should match when not using JMX.",password,datasource.getPoolProperties().getPassword()); + MBeanServer mbs = ManagementFactory.getPlatformMBeanServer(); + ConnectionPoolMBean mbean = JMX.newMBeanProxy(mbs, oname, ConnectionPoolMBean.class); + String jmxPassword = mbean.getPassword(); + Properties jmxProperties = mbean.getDbProperties(); + assertFalse("Passwords should not match.", password.equals(jmxPassword)); + assertEquals("Password property should be missing", jmxProperties.containsKey(PoolUtilities.PROP_PASSWORD)); + } + +} Propchange: tomcat/trunk/modules/jdbc-pool/test/org/apache/tomcat/jdbc/test/JmxPasswordTest.java ------------------------------------------------------------------------------ svn:eol-style = native --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org