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 2016/02/05 14:39:13 UTC

svn commit: r1728664 - in /tomcat/trunk: java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java java/org/apache/tomcat/util/scan/Constants.java java/org/apache/tomcat/util/scan/StandardJarScanner.java webapps/docs/changelog.xml

Author: markt
Date: Fri Feb  5 13:39:13 2016
New Revision: 1728664

URL: http://svn.apache.org/viewvc?rev=1728664&view=rev
Log:
Ensure that /WEB-INF/classes is never processed as a web fragment.

Modified:
    tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java
    tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java
    tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java
    tomcat/trunk/webapps/docs/changelog.xml

Modified: tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java?rev=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/FragmentJarScannerCallback.java Fri Feb  5 13:39:13 2016
@@ -111,6 +111,11 @@ public class FragmentJarScannerCallback
     @Override
     public void scan(File file, String webappPath, boolean isWebapp) throws IOException {
 
+        // Fragments unpacked in WEB-INF/classes are not handled
+        if ("/WEB-INF/classes".equals(webappPath)) {
+            return;
+        }
+
         WebXml fragment = new WebXml();
         fragment.setWebappJar(isWebapp);
         fragment.setDelegate(delegate);

Modified: tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java?rev=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/scan/Constants.java Fri Feb  5 13:39:13 2016
@@ -33,6 +33,7 @@ public final class Constants {
     /* Commons strings */
     public static final String JAR_EXT = ".jar";
     public static final String WEB_INF_LIB = "/WEB-INF/lib/";
+    public static final String WEB_INF_CLASSES = "/WEB-INF/classes";
 
     /* Context attributes - used to pass short-cuts to Jasper */
     public static final String MERGED_WEB_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=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/scan/StandardJarScanner.java Fri Feb  5 13:39:13 2016
@@ -172,15 +172,16 @@ public class StandardJarScanner implemen
         }
 
         // Scan WEB-INF/classes
-        if (isScanAllDirectories()) {
-            try {
-                URL url = context.getResource("/WEB-INF/classes/META-INF");
+        URL webInfURL = null;
+        try {
+            webInfURL = context.getResource(Constants.WEB_INF_CLASSES);
+            if (isScanAllDirectories()) {
+                URL url = context.getResource(Constants.WEB_INF_CLASSES + "/META-INF");
                 if (url != null) {
                     // Class path scanning will look at WEB-INF/classes since
                     // that is the URL that Tomcat's web application class
                     // loader returns. Therefore, it is this URL that needs to
                     // be added to the set of processed URLs.
-                    URL webInfURL = context.getResource("/WEB-INF/classes");
                     if (webInfURL != null) {
                         processedURLs.add(webInfURL);
                     }
@@ -190,9 +191,9 @@ public class StandardJarScanner implemen
                         log.warn(sm.getString("jarScan.webinfclassesFail"), e);
                     }
                 }
-            } catch (MalformedURLException e) {
-                // Ignore
             }
+        } catch (MalformedURLException e) {
+            // Ignore. Won't happen. URLs are of the correct form.
         }
 
         // Scan the classpath
@@ -244,8 +245,12 @@ public class StandardJarScanner implemen
                                 log.debug(sm.getString(
                                         "jarScan.classloaderJarScan", urls[i]));
                             }
+                            String webappPath = null;
+                            if (urls[i].equals(webInfURL)) {
+                                webappPath = Constants.WEB_INF_CLASSES;
+                            }
                             try {
-                                process(scanType, callback, urls[i], null, isWebapp);
+                                process(scanType, callback, urls[i], webappPath, isWebapp);
                             } catch (IOException ioe) {
                                 log.warn(sm.getString(
                                         "jarScan.classloaderFail", urls[i]),

Modified: tomcat/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1728664&r1=1728663&r2=1728664&view=diff
==============================================================================
--- tomcat/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/trunk/webapps/docs/changelog.xml Fri Feb  5 13:39:13 2016
@@ -45,6 +45,14 @@
   issues do not "pop up" wrt. others).
 -->
 <section name="Tomcat 9.0.0.M4" rtext="In development">
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Ensure that <code>/WEB-INF/classes</code> is never processed as a web
+        fragment. (markt)
+      </fix>
+    </changelog>
+  </subsection>
   <subsection name="Coyote">
     <changelog>
       <fix>



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org