You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2015/01/21 11:08:15 UTC
svn commit: r1653471 - in /tomcat/trunk: conf/catalina.properties
java/org/apache/catalina/startup/Bootstrap.java
test/org/apache/catalina/startup/TestBootstrap.java
Author: markt
Date: Wed Jan 21 10:08:15 2015
New Revision: 1653471
URL: http://svn.apache.org/r1653471
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57455
Add a note that " may not appear in a path value and throw an IAE if once does.
Modified:
tomcat/trunk/conf/catalina.properties
tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java
tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java
Modified: tomcat/trunk/conf/catalina.properties
URL: http://svn.apache.org/viewvc/tomcat/trunk/conf/catalina.properties?rev=1653471&r1=1653470&r2=1653471&view=diff
==============================================================================
--- tomcat/trunk/conf/catalina.properties (original)
+++ tomcat/trunk/conf/catalina.properties Wed Jan 21 10:08:15 2015
@@ -48,6 +48,8 @@ org.apache.jasper.,org.apache.naming.,or
#
# Note: Values are enclosed in double quotes ("...") in case either the
# ${catalina.base} path or the ${catalina.home} path contains a comma.
+# Because double quotes are used for quoting, the double quote character
+# may not appear in a path.
common.loader="${catalina.base}/lib","${catalina.base}/lib/*.jar","${catalina.home}/lib","${catalina.home}/lib/*.jar"
#
@@ -61,6 +63,11 @@ common.loader="${catalina.base}/lib","${
# "foo/*.jar": Add all the JARs of the specified folder as class
# repositories
# "foo/bar.jar": Add bar.jar as a class repository
+#
+# Note: Values may be enclosed in double quotes ("...") in case either the
+# ${catalina.base} path or the ${catalina.home} path contains a comma.
+# Because double quotes are used for quoting, the double quote character
+# may not appear in a path.
server.loader=
#
@@ -75,6 +82,11 @@ server.loader=
# "foo/bar.jar": Add bar.jar as a class repository
# Please note that for single jars, e.g. bar.jar, you need the URL form
# starting with file:.
+#
+# Note: Values may be enclosed in double quotes ("...") in case either the
+# ${catalina.base} path or the ${catalina.home} path contains a comma.
+# Because double quotes are used for quoting, the double quote character
+# may not appear in a path.
shared.loader=
# Default list of JAR files that should not be scanned using the JarScanner
Modified: tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java?rev=1653471&r1=1653470&r2=1653471&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/Bootstrap.java Wed Jan 21 10:08:15 2015
@@ -568,14 +568,28 @@ public final class Bootstrap {
String path = value.substring(matcher.start(), matcher.end());
path = path.trim();
+ if (path.length() == 0) {
+ continue;
+ }
+
+ char first = path.charAt(0);
+ char last = path.charAt(path.length() - 1);
- if (path.startsWith("\"") && path.length() > 1) {
+ if (first == '"' && last == '"' && path.length() > 1) {
path = path.substring(1, path.length() - 1);
path = path.trim();
- }
-
- if (path.length() == 0) {
- continue;
+ if (path.length() == 0) {
+ continue;
+ }
+ } else if (path.contains("\"")) {
+ // Unbalanced quotes
+ // Too early to use standard i18n support. The class path hasn't
+ // been configured.
+ throw new IllegalArgumentException(
+ "The double quote [\"] character only be used to quote paths. It must " +
+ "not appear in a path. This loader path is not valid: [" + value + "]");
+ } else {
+ // Not quoted - NO-OP
}
result.add(path);
Modified: tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java?rev=1653471&r1=1653470&r2=1653471&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java (original)
+++ tomcat/trunk/test/org/apache/catalina/startup/TestBootstrap.java Wed Jan 21 10:08:15 2015
@@ -113,6 +113,66 @@ public class TestBootstrap {
doTest("aaa,\"bbb,\"", "aaa", "bbb,");
}
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes01() {
+ doTest("\"", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes02() {
+ doTest("\"aaa", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes03() {
+ doTest("aaa\"", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes04() {
+ doTest("a\"a", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes05() {
+ doTest("b,\"", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes06() {
+ doTest("b,\"aaa", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes07() {
+ doTest("b,aaa\"", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes08() {
+ doTest("b,a\"a", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes09() {
+ doTest("\",b", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes10() {
+ doTest("\"aaa,b", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes11() {
+ doTest("aaa\",b", "ignored");
+ }
+
+ @Test(expected=IllegalArgumentException.class)
+ public void testUnbalancedQuotes12() {
+ doTest("a\"a,b", "ignored");
+ }
+
private void doTest(String input, String... expected) {
String[] result = Bootstrap.getPaths(input);
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org