2013/11/8  <ma...@apache.org>:
> Author: markt
> Date: Fri Nov  8 00:09:19 2013
> New Revision: 1539873
>
> URL: http://svn.apache.org/r1539873
> Log:
> Correctly implement delegation filtering for container packages.
>
> Modified:
>     tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
>
> Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java
> URL: 
> http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java?rev=1539873&r1=1539872&r2=1539873&view=diff
> ==============================================================================
> --- tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java 
> (original)
> +++ tomcat/trunk/java/org/apache/catalina/loader/WebappClassLoader.java Fri 
> Nov  8 00:09:19 2013
> @@ -47,7 +47,6 @@ import java.util.ConcurrentModificationE
>  import java.util.Date;
>  import java.util.Enumeration;
>  import java.util.HashMap;
> -import java.util.HashSet;
>  import java.util.Iterator;
>  import java.util.LinkedHashSet;
>  import java.util.List;
> @@ -61,6 +60,8 @@ import java.util.concurrent.ThreadPoolEx
>  import java.util.jar.Attributes;
>  import java.util.jar.Attributes.Name;
>  import java.util.jar.Manifest;
> +import java.util.regex.Matcher;
> +import java.util.regex.Pattern;
>
>  import org.apache.catalina.Globals;
>  import org.apache.catalina.Lifecycle;
> @@ -179,18 +180,23 @@ public class WebappClassLoader extends U
>      // ------------------------------------------------------- Static 
> Variables
>
>      /**
> -     * Set of package names which are not allowed to be loaded from a webapp
> -     * class loader without delegating first.
> +     * Regular expression of package names which are not allowed to be loaded
> +     * from a webapp class loader without delegating first.
>       */
> -    protected static final Set<String> packageTriggersDeny = new HashSet<>();
> +    protected final Matcher packageTriggersDeny = Pattern.compile(
> +            "^javax\\.el\\.|" +
> +            "^javax\\.servlet\\.|" +
> +            
> "^org\\.apache\\.(catalina|coyote|el|jasper|juli|naming|tomcat)\\."
> +            ).matcher("");
>
>
>      /**
> -     * Set of package names which are allowed to be loaded from a webapp 
> class
> -     * loader without delegating first and override any set by
> +     * Regular expression of package names which are allowed to be loaded 
> from a
> +     * webapp class loader without delegating first and override any set by
>       * {@link #packageTriggersDeny}.
>       */
> -    protected static final Set<String> packageTriggersPermit = new 
> HashSet<>();
> +    protected final Matcher packageTriggersPermit =
> +            Pattern.compile("^javax\\.servlet\\.jsp\\.jstl\\.").matcher("");
>

Looking at other Tomcat projects...

Standard Taglib uses  org.apache.taglibs.standard.**, so it is not
affected by the above patterns.

Maven Plugin uses org.apache.tomcat.maven.**, so it is affected.
(Even though it is unlikely that those classes would be used in a web
application, it is not illegal).


Best regards,
Konstantin Kolinko

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

Reply via email to