Author: markt Date: Thu Jan 19 15:04:34 2012 New Revision: 1233415 URL: http://svn.apache.org/viewvc?rev=1233415&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=51408 Don't use Charset.defaultCharset(). Use ISO-8859-1 charset explicitly.
Modified: tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java tomcat/trunk/java/org/apache/catalina/valves/SSLValve.java tomcat/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java tomcat/trunk/java/org/apache/coyote/http11/filters/IdentityInputFilter.java tomcat/trunk/java/org/apache/coyote/http11/filters/VoidInputFilter.java tomcat/trunk/java/org/apache/jasper/Constants.java tomcat/trunk/java/org/apache/jasper/compiler/SmapUtil.java tomcat/trunk/java/org/apache/naming/resources/Constants.java tomcat/trunk/java/org/apache/naming/resources/ProxyDirContext.java tomcat/trunk/java/org/apache/tomcat/util/buf/MessageBytes.java Modified: tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java (original) +++ tomcat/trunk/java/org/apache/catalina/ant/AbstractCatalinaTask.java Thu Jan 19 15:04:34 2012 @@ -26,9 +26,9 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; import java.net.URLConnection; -import java.nio.charset.Charset; import org.apache.catalina.util.Base64; +import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; @@ -202,7 +202,7 @@ public abstract class AbstractCatalinaTa // Set up an authorization header with our credentials String input = username + ":" + password; String output = - Base64.encode(input.getBytes(Charset.defaultCharset())); + Base64.encode(input.getBytes(B2CConverter.ISO_8859_1)); hconn.setRequestProperty("Authorization", "Basic " + output); Modified: tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java (original) +++ tomcat/trunk/java/org/apache/catalina/authenticator/DigestAuthenticator.java Thu Jan 19 15:04:34 2012 @@ -20,7 +20,6 @@ package org.apache.catalina.authenticato import java.io.IOException; -import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.Principal; @@ -38,6 +37,7 @@ import org.apache.catalina.deploy.LoginC import org.apache.catalina.util.MD5Encoder; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.buf.B2CConverter; @@ -368,7 +368,7 @@ public class DigestAuthenticator extends byte[] buffer; synchronized (md5Helper) { buffer = md5Helper.digest( - ipTimeKey.getBytes(Charset.defaultCharset())); + ipTimeKey.getBytes(B2CConverter.ISO_8859_1)); } return currentTime + ":" + md5Encoder.encode(buffer); @@ -619,7 +619,7 @@ public class DigestAuthenticator extends byte[] buffer = null; synchronized (md5Helper) { buffer = md5Helper.digest( - serverIpTimeKey.getBytes(Charset.defaultCharset())); + serverIpTimeKey.getBytes(B2CConverter.ISO_8859_1)); } String md5ServerIpTimeKey = md5Encoder.encode(buffer); if (!md5ServerIpTimeKey.equals(md5clientIpTimeKey)) { @@ -681,7 +681,7 @@ public class DigestAuthenticator extends byte[] buffer; synchronized (md5Helper) { - buffer = md5Helper.digest(a2.getBytes(Charset.defaultCharset())); + buffer = md5Helper.digest(a2.getBytes(B2CConverter.ISO_8859_1)); } String md5a2 = md5Encoder.encode(buffer); Modified: tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java (original) +++ tomcat/trunk/java/org/apache/catalina/realm/JNDIRealm.java Thu Jan 19 15:04:34 2012 @@ -20,7 +20,6 @@ package org.apache.catalina.realm; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; -import java.nio.charset.Charset; import java.security.Principal; import java.text.MessageFormat; import java.util.ArrayList; @@ -55,6 +54,7 @@ import javax.naming.directory.SearchResu import org.apache.catalina.LifecycleException; import org.apache.catalina.util.Base64; +import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.CharChunk; import org.ietf.jgss.GSSCredential; @@ -1513,7 +1513,7 @@ public class JNDIRealm extends RealmBase synchronized (this) { password = password.substring(5); md.reset(); - md.update(credentials.getBytes(Charset.defaultCharset())); + md.update(credentials.getBytes(B2CConverter.ISO_8859_1)); String digestedPassword = Base64.encode(md.digest()); validated = password.equals(digestedPassword); } @@ -1524,12 +1524,12 @@ public class JNDIRealm extends RealmBase password = password.substring(6); md.reset(); - md.update(credentials.getBytes(Charset.defaultCharset())); + md.update(credentials.getBytes(B2CConverter.ISO_8859_1)); // Decode stored password. ByteChunk pwbc = new ByteChunk(password.length()); try { - pwbc.append(password.getBytes(Charset.defaultCharset()), + pwbc.append(password.getBytes(B2CConverter.ISO_8859_1), 0, password.length()); } catch (IOException e) { // Should never happen Modified: tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java (original) +++ tomcat/trunk/java/org/apache/catalina/realm/RealmBase.java Thu Jan 19 15:04:34 2012 @@ -241,7 +241,7 @@ public abstract class RealmBase extends protected Charset getDigestCharset() throws UnsupportedEncodingException { if (digestEncoding == null) { - return Charset.defaultCharset(); + return B2CConverter.ISO_8859_1; } else { return B2CConverter.getCharset(getDigestEncoding()); } Modified: tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java Thu Jan 19 15:04:34 2012 @@ -24,7 +24,6 @@ import java.io.IOException; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; -import java.nio.charset.Charset; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; @@ -57,6 +56,7 @@ import org.apache.catalina.util.XMLWrite import org.apache.naming.resources.CacheEntry; import org.apache.naming.resources.Resource; import org.apache.naming.resources.ResourceAttributes; +import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.http.FastHttpDateFormat; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -1153,7 +1153,7 @@ public class WebdavServlet + lock.expiresAt + "-" + System.currentTimeMillis() + "-" + secret; String lockToken = md5Encoder.encode(md5Helper.digest( - lockTokenStr.getBytes(Charset.defaultCharset()))); + lockTokenStr.getBytes(B2CConverter.ISO_8859_1))); if ( (exists) && (object instanceof DirContext) && (lock.depth == maxDepth) ) { Modified: tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java (original) +++ tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java Thu Jan 19 15:04:34 2012 @@ -247,11 +247,11 @@ public final class RequestUtil { // use the specified encoding to extract bytes out of the // given string so that the encoding is not lost. If an - // encoding is not specified, let it use platform default + // encoding is not specified, use ISO-8859-1 byte[] bytes = null; try { if (enc == null) { - bytes = str.getBytes(Charset.defaultCharset()); + bytes = str.getBytes(B2CConverter.ISO_8859_1); } else { bytes = str.getBytes(B2CConverter.getCharset(enc)); } Modified: tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/AccessLogValve.java Thu Jan 19 15:04:34 2012 @@ -1092,7 +1092,7 @@ public class AccessLogValve extends Valv } } if (charset == null) { - charset = Charset.defaultCharset(); + charset = B2CConverter.ISO_8859_1; } try { Modified: tomcat/trunk/java/org/apache/catalina/valves/SSLValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/SSLValve.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/SSLValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/SSLValve.java Thu Jan 19 15:04:34 2012 @@ -18,7 +18,6 @@ package org.apache.catalina.valves; import java.io.ByteArrayInputStream; import java.io.IOException; -import java.nio.charset.Charset; import java.security.NoSuchProviderException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; @@ -30,6 +29,7 @@ import org.apache.catalina.connector.Req import org.apache.catalina.connector.Response; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.util.buf.B2CConverter; /** * When using mod_proxy_http, the client SSL information is not included in the @@ -97,7 +97,7 @@ public class SSLValve extends ValveBase String strcerts = strcert4.concat("\n-----END CERTIFICATE-----\n"); // ByteArrayInputStream bais = new ByteArrayInputStream(strcerts.getBytes("UTF-8")); ByteArrayInputStream bais = new ByteArrayInputStream( - strcerts.getBytes(Charset.defaultCharset())); + strcerts.getBytes(B2CConverter.ISO_8859_1)); X509Certificate jsseCerts[] = null; String providerName = (String) request.getConnector().getProperty( "clientCertProvider"); Modified: tomcat/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/filters/BufferedInputFilter.java Thu Jan 19 15:04:34 2012 @@ -18,11 +18,11 @@ package org.apache.coyote.http11.filters; import java.io.IOException; -import java.nio.charset.Charset; import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; import org.apache.coyote.http11.InputFilter; +import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.ByteChunk; /** @@ -48,7 +48,7 @@ public class BufferedInputFilter impleme // ----------------------------------------------------- Static Initializer static { - ENCODING.setBytes(ENCODING_NAME.getBytes(Charset.defaultCharset()), 0, + ENCODING.setBytes(ENCODING_NAME.getBytes(B2CConverter.ISO_8859_1), 0, ENCODING_NAME.length()); } Modified: tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/filters/ChunkedInputFilter.java Thu Jan 19 15:04:34 2012 @@ -19,12 +19,12 @@ package org.apache.coyote.http11.filters import java.io.EOFException; import java.io.IOException; -import java.nio.charset.Charset; import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; import org.apache.coyote.http11.Constants; import org.apache.coyote.http11.InputFilter; +import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.HexUtils; import org.apache.tomcat.util.buf.MessageBytes; @@ -51,7 +51,7 @@ public class ChunkedInputFilter implemen static { - ENCODING.setBytes(ENCODING_NAME.getBytes(Charset.defaultCharset()), 0, + ENCODING.setBytes(ENCODING_NAME.getBytes(B2CConverter.ISO_8859_1), 0, ENCODING_NAME.length()); } Modified: tomcat/trunk/java/org/apache/coyote/http11/filters/IdentityInputFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/filters/IdentityInputFilter.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/filters/IdentityInputFilter.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/filters/IdentityInputFilter.java Thu Jan 19 15:04:34 2012 @@ -18,11 +18,11 @@ package org.apache.coyote.http11.filters; import java.io.IOException; -import java.nio.charset.Charset; import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; import org.apache.coyote.http11.InputFilter; +import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.ByteChunk; /** @@ -44,7 +44,7 @@ public class IdentityInputFilter impleme static { - ENCODING.setBytes(ENCODING_NAME.getBytes(Charset.defaultCharset()), 0, + ENCODING.setBytes(ENCODING_NAME.getBytes(B2CConverter.ISO_8859_1), 0, ENCODING_NAME.length()); } Modified: tomcat/trunk/java/org/apache/coyote/http11/filters/VoidInputFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/coyote/http11/filters/VoidInputFilter.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/coyote/http11/filters/VoidInputFilter.java (original) +++ tomcat/trunk/java/org/apache/coyote/http11/filters/VoidInputFilter.java Thu Jan 19 15:04:34 2012 @@ -18,11 +18,11 @@ package org.apache.coyote.http11.filters; import java.io.IOException; -import java.nio.charset.Charset; import org.apache.coyote.InputBuffer; import org.apache.coyote.Request; import org.apache.coyote.http11.InputFilter; +import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.ByteChunk; /** @@ -45,7 +45,7 @@ public class VoidInputFilter implements static { - ENCODING.setBytes(ENCODING_NAME.getBytes(Charset.defaultCharset()), 0, + ENCODING.setBytes(ENCODING_NAME.getBytes(B2CConverter.ISO_8859_1), 0, ENCODING_NAME.length()); } Modified: tomcat/trunk/java/org/apache/jasper/Constants.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/Constants.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/Constants.java (original) +++ tomcat/trunk/java/org/apache/jasper/Constants.java Thu Jan 19 15:04:34 2012 @@ -17,6 +17,7 @@ package org.apache.jasper; +import java.nio.charset.Charset; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -219,4 +220,9 @@ public class Constants { * the tomcat instance installation path */ public static final String CATALINA_BASE_PROP = "catalina.base"; + + /** + * Retain reference to default character set so we don't have to look it up. + */ + public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); } Modified: tomcat/trunk/java/org/apache/jasper/compiler/SmapUtil.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/SmapUtil.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/SmapUtil.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/SmapUtil.java Thu Jan 19 15:04:34 2012 @@ -25,11 +25,11 @@ import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; -import java.nio.charset.Charset; import java.util.HashMap; import java.util.Iterator; import java.util.Map; +import org.apache.jasper.Constants; import org.apache.jasper.JasperException; import org.apache.jasper.JspCompilationContext; @@ -161,7 +161,7 @@ public class SmapUtil { for (int i = 0; i < smap.length; i += 2) { File outServlet = new File(smap[i]); SDEInstaller.install(outServlet, - smap[i+1].getBytes(Charset.defaultCharset())); + smap[i+1].getBytes(Constants.ISO_8859_1)); } } Modified: tomcat/trunk/java/org/apache/naming/resources/Constants.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/resources/Constants.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/naming/resources/Constants.java (original) +++ tomcat/trunk/java/org/apache/naming/resources/Constants.java Thu Jan 19 15:04:34 2012 @@ -18,6 +18,8 @@ package org.apache.naming.resources; +import java.nio.charset.Charset; + /** * Static constants for this package. @@ -29,4 +31,9 @@ public final class Constants { "java.protocol.handler.pkgs"; public static final String Package = "org.apache.naming.resources"; + + /** + * Retain reference to default character set so we don't have to look it up. + */ + public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1"); } Modified: tomcat/trunk/java/org/apache/naming/resources/ProxyDirContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/resources/ProxyDirContext.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/naming/resources/ProxyDirContext.java (original) +++ tomcat/trunk/java/org/apache/naming/resources/ProxyDirContext.java Thu Jan 19 15:04:34 2012 @@ -21,7 +21,6 @@ package org.apache.naming.resources; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; -import java.nio.charset.Charset; import java.util.Hashtable; import javax.naming.Binding; @@ -280,7 +279,7 @@ public class ProxyDirContext implements return object; } else { return new Resource(new ByteArrayInputStream - (object.toString().getBytes(Charset.defaultCharset()))); + (object.toString().getBytes(Constants.ISO_8859_1))); } } @@ -1437,7 +1436,7 @@ public class ProxyDirContext implements entry.resource = (Resource) object; } else { entry.resource = new Resource(new ByteArrayInputStream - (object.toString().getBytes(Charset.defaultCharset()))); + (object.toString().getBytes(Constants.ISO_8859_1))); } Attributes attributes = dirContext.getAttributes(parseName(name)); if (!(attributes instanceof ResourceAttributes)) { @@ -1600,7 +1599,7 @@ public class ProxyDirContext implements entry.resource = (Resource) object; } else { entry.resource = new Resource(new ByteArrayInputStream - (object.toString().getBytes(Charset.defaultCharset()))); + (object.toString().getBytes(Constants.ISO_8859_1))); } } catch (NamingException e) { exists = false; Modified: tomcat/trunk/java/org/apache/tomcat/util/buf/MessageBytes.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/buf/MessageBytes.java?rev=1233415&r1=1233414&r2=1233415&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/buf/MessageBytes.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/buf/MessageBytes.java Thu Jan 19 15:04:34 2012 @@ -18,7 +18,6 @@ package org.apache.tomcat.util.buf; import java.io.IOException; import java.io.Serializable; -import java.nio.charset.Charset; import java.util.Locale; /** @@ -210,7 +209,7 @@ public final class MessageBytes implemen } toString(); type=T_BYTES; - byte bb[] = strValue.getBytes(Charset.defaultCharset()); + byte bb[] = strValue.getBytes(B2CConverter.ISO_8859_1); byteC.setBytes(bb, 0, bb.length); } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org