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-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org