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/12/16 21:53:40 UTC
svn commit: r1720448 - in /tomcat/trunk:
java/org/apache/tomcat/util/scan/StandardJarScanner.java
test/org/apache/tomcat/util/scan/TestStandardJarScanner.java
webapps/docs/changelog.xml
Author: markt
Date: Wed Dec 16 20:53:39 2015
New Revision: 1720448
URL: http://svn.apache.org/viewvc?rev=1720448&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=58692
Make StandardJarScanner more robust. Log a warning if a class path entry cannot be scanned rather than triggering the failure of the web application. Includes a test case written by Derek Abdine.
Modified:
tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
tomcat/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java
tomcat/trunk/webapps/docs/changelog.xml
Modified: tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java?rev=1720448&r1=1720447&r2=1720448&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java Wed Dec 16 20:53:39 2015
@@ -20,7 +20,6 @@ import java.io.File;
import java.io.IOException;
import java.net.JarURLConnection;
import java.net.MalformedURLException;
-import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLConnection;
@@ -36,6 +35,7 @@ import org.apache.tomcat.JarScanFilter;
import org.apache.tomcat.JarScanType;
import org.apache.tomcat.JarScanner;
import org.apache.tomcat.JarScannerCallback;
+import org.apache.tomcat.util.ExceptionUtils;
import org.apache.tomcat.util.res.StringManager;
/**
@@ -336,10 +336,11 @@ public class StandardJarScanner implemen
}
}
}
- } catch (URISyntaxException e) {
+ } catch (Throwable t) {
+ ExceptionUtils.handleThrowable(t);
// Wrap the exception and re-throw
IOException ioe = new IOException();
- ioe.initCause(e);
+ ioe.initCause(t);
throw ioe;
}
}
Modified: tomcat/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java?rev=1720448&r1=1720447&r2=1720448&view=diff
==============================================================================
--- tomcat/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java (original)
+++ tomcat/trunk/test/org/apache/tomcat/util/scan/TestStandardJarScanner.java Wed Dec 16 20:53:39 2015
@@ -19,6 +19,7 @@ package org.apache.tomcat.util.scan;
import java.io.File;
import java.io.IOException;
import java.net.JarURLConnection;
+import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
@@ -68,6 +69,31 @@ public class TestStandardJarScanner {
}
}
+
+ /**
+ * Tomcat should ignore URLs which do not have a file part and do not use the file scheme.
+ */
+ @Test
+ public void skipsInvalidClasspathURLNoFilePartNoFileScheme() {
+ StandardJarScanner scanner = new StandardJarScanner();
+ LoggingCallback callback = new LoggingCallback();
+ TesterServletContext context = new TesterServletContext() {
+ @Override
+ public ClassLoader getClassLoader() {
+ URLClassLoader urlClassLoader;
+ try {
+ urlClassLoader = new URLClassLoader(
+ new URL[] { new URL("http://felix.extensions:9/") });
+ } catch (MalformedURLException e) {
+ throw new RuntimeException(e);
+ }
+ return urlClassLoader;
+ }
+ };
+ scanner.scan(JarScanType.PLUGGABILITY, context, callback);
+ }
+
+
private static class LoggingCallback implements JarScannerCallback {
List<String> callbacks = new ArrayList<>();
Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1720448&r1=1720447&r2=1720448&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Wed Dec 16 20:53:39 2015
@@ -137,6 +137,12 @@
<code>HttpServletRequest.getContextPath()</code>. This is a follow-up to
the fix for <bug>57215</bug>. (markt)
</fix>
+ <fix>
+ <bug>58692</bug>: Make <code>StandardJarScanner</code> more robust. Log
+ a warning if a class path entry cannot be scanned rather than triggering
+ the failure of the web application. Includes a test case written by
+ Derek Abdine. (markt)
+ </fix>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org