Author: markt Date: Sat Oct 24 08:49:50 2015 New Revision: 1710313 URL: http://svn.apache.org/viewvc?rev=1710313&view=rev Log: Refactor - Remove duplicate code - Use standard mechanism to pre-load classes for the SecurityManager
Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java tomcat/trunk/java/org/apache/tomcat/util/net/URL.java Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Response.java?rev=1710313&r1=1710312&r2=1710313&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/Response.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Response.java Sat Oct 24 08:49:50 2015 @@ -81,9 +81,6 @@ public class Response private static final boolean ENFORCE_ENCODING_IN_GET_WRITER; static { - // Ensure that URL is loaded for SM - URL.isSchemeChar('c'); - ENFORCE_ENCODING_IN_GET_WRITER = Boolean.valueOf( System.getProperty("org.apache.catalina.connector.Response.ENFORCE_ENCODING_IN_GET_WRITER", "true")).booleanValue(); @@ -1593,7 +1590,7 @@ public class Response throw iae; } - } else if (leadingSlash || !hasScheme(location)) { + } else if (leadingSlash || !URL.hasScheme(location)) { redirectURLCC.recycle(); @@ -1769,22 +1766,6 @@ public class Response } /** - * Determine if a URI string has a <code>scheme</code> component. - */ - private boolean hasScheme(String uri) { - int len = uri.length(); - for(int i=0; i < len ; i++) { - char c = uri.charAt(i); - if(c == ':') { - return i > 0; - } else if(!URL.isSchemeChar(c)) { - return false; - } - } - return false; - } - - /** * Return the specified URL with the specified session identifier * suitably encoded. * Modified: tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java?rev=1710313&r1=1710312&r2=1710313&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java (original) +++ tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java Sat Oct 24 08:49:50 2015 @@ -286,6 +286,7 @@ public final class SecurityClassLoad { "util.net.NioBlockingSelector$BlockPoller$2"); loader.loadClass(basePackage + "util.net.NioBlockingSelector$BlockPoller$3"); + loader.loadClass(basePackage + "util.net.URL"); // security loader.loadClass(basePackage + "util.security.PrivilegedGetTccl"); loader.loadClass(basePackage + "util.security.PrivilegedSetTccl"); Modified: tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java?rev=1710313&r1=1710312&r2=1710313&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java (original) +++ tomcat/trunk/java/org/apache/catalina/valves/rewrite/RewriteValve.java Sat Oct 24 08:49:50 2015 @@ -344,7 +344,7 @@ public class RewriteValve extends ValveB // 1. this valve is associated with a context // 2. the url starts with a leading slash // 3. the url isn't absolute - if (context && urlString.charAt(0) == '/' && !hasScheme(urlString)) { + if (context && urlString.charAt(0) == '/' && !URL.hasScheme(urlString)) { urlString.insert(0, request.getContext().getEncodedPath()); } response.sendRedirect(urlString.toString()); @@ -735,21 +735,4 @@ public class RewriteValve extends ValveB throw new IllegalArgumentException("Invalid flag in: " + line + " flag: " + flag); } } - - - /** - * Determine if a URI string has a <code>scheme</code> component. - */ - protected static boolean hasScheme(StringBuffer uri) { - int len = uri.length(); - for(int i=0; i < len ; i++) { - char c = uri.charAt(i); - if(c == ':') { - return i > 0; - } else if(!URL.isSchemeChar(c)) { - return false; - } - } - return false; - } } Modified: tomcat/trunk/java/org/apache/tomcat/util/net/URL.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/URL.java?rev=1710313&r1=1710312&r2=1710313&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/util/net/URL.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/URL.java Sat Oct 24 08:49:50 2015 @@ -648,10 +648,34 @@ public final class URL implements Serial /** * Determine if the character is allowed in the scheme of a URI. * See RFC 2396, Section 3.1 + * + * @param c The character to test + * + * @return {@code true} if a the character is allowed, otherwise {@false} */ - public static boolean isSchemeChar(char c) { + private static boolean isSchemeChar(char c) { return Character.isLetterOrDigit(c) || c == '+' || c == '-' || c == '.'; } + + /** + * Determine if a URI string has a <code>scheme</code> component. + * + * @param uri The URI to test + * + * @return {@code true} if a scheme is present, otherwise {@false} + */ + public static boolean hasScheme(CharSequence uri) { + int len = uri.length(); + for(int i=0; i < len ; i++) { + char c = uri.charAt(i); + if(c == ':') { + return i > 0; + } else if(!URL.isSchemeChar(c)) { + return false; + } + } + return false; + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org