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