2017-12-11 20:47 GMT+03:00 <[email protected]>:
> Author: markt
> Date: Mon Dec 11 17:47:03 2017
> New Revision: 1817800
>
> URL: http://svn.apache.org/viewvc?rev=1817800&view=rev
> Log:
> Pre-load additional classes to prevent SecurityExceptions if the first
> request received when running under a security manager is an asynchronous
> servlet.
>
> Modified:
>
> tomcat/tc7.0.x/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
> tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
>
> Modified:
> tomcat/tc7.0.x/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
> URL:
> http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/security/SecurityClassLoad.java?rev=1817800&r1=1817799&r2=1817800&view=diff
> ==============================================================================
> ---
> tomcat/tc7.0.x/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
> (original)
> +++
> tomcat/tc7.0.x/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
> Mon Dec 11 17:47:03 2017
> @@ -163,6 +163,10 @@ public final class SecurityClassLoad {
> private static final void loadCoyotePackage(ClassLoader loader)
> throws Exception {
> final String basePackage = "org.apache.coyote.";
> + // Classes created by the Java 6 compiler because we use switch with
> an enum
Looking into tomcat-coyote.jar, there is also AbstractHttp11Processor$1.class,
Decompiler shows that it also contains switch(enum) helping mappings:
static final int $SwitchMap$org$apache$coyote$ActionCode[];
static final int
$SwitchMap$org$apache$tomcat$util$log$UserDataHelper$Mode[];
> + loader.loadClass(basePackage + "http11.Http11Processor$1");
> + loader.loadClass(basePackage + "http11.Http11NioProcessor$1");
> + loader.loadClass(basePackage + "http11.Http11AprProcessor$1");
> loader.loadClass(basePackage + "http11.AbstractOutputBuffer$1");
> loader.loadClass(basePackage + "http11.Constants");
> // Make sure system property is read at this point
> @@ -292,6 +296,7 @@ public final class SecurityClassLoad {
> "util.net.NioBlockingSelector$BlockPoller$2");
> loader.loadClass(basePackage +
> "util.net.NioBlockingSelector$BlockPoller$3");
> + loader.loadClass(basePackage + "util.net.SendfileState");
> loader.loadClass(basePackage + "util.net.SSLSupport$CipherData");
> // security
> loader.loadClass(basePackage + "util.security.PrivilegedGetTccl");
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]