Author: markt
Date: Thu Jan 14 21:33:58 2010
New Revision: 899420

URL: http://svn.apache.org/viewvc?rev=899420&view=rev
Log:
Fix TCK failures with security manager due to fix for bug 47774

Modified:
    tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
    tomcat/trunk/java/org/apache/catalina/session/StandardSession.java

Modified: tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java?rev=899420&r1=899419&r2=899420&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/security/SecurityClassLoad.java Thu 
Jan 14 21:33:58 2010
@@ -99,6 +99,8 @@
         loader.loadClass
             (basePackage + "session.StandardSession");
         loader.loadClass
+            (basePackage + "session.StandardSession$PrivilegedSetTccl");
+        loader.loadClass
             (basePackage +
              "session.StandardSession$1");
         loader.loadClass

Modified: tomcat/trunk/java/org/apache/catalina/session/StandardSession.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardSession.java?rev=899420&r1=899419&r2=899420&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/StandardSession.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/session/StandardSession.java Thu Jan 
14 21:33:58 2010
@@ -710,8 +710,14 @@
             if (context.getLoader() != null &&
                     context.getLoader().getClassLoader() != null) {
                 oldTccl = Thread.currentThread().getContextClassLoader();
-                Thread.currentThread().setContextClassLoader(
-                        context.getLoader().getClassLoader());
+                if (Globals.IS_SECURITY_ENABLED) {
+                    PrivilegedAction<Void> pa = new PrivilegedSetTccl(
+                            context.getLoader().getClassLoader());
+                    AccessController.doPrivileged(pa);
+                } else {
+                    Thread.currentThread().setContextClassLoader(
+                            context.getLoader().getClassLoader());
+                }
             }
             try {
                 Object listeners[] = 
context.getApplicationLifecycleListeners();
@@ -747,7 +753,13 @@
                 }
             } finally {
                 if (oldTccl != null) {
-                    Thread.currentThread().setContextClassLoader(oldTccl);
+                    if (Globals.IS_SECURITY_ENABLED) {
+                        PrivilegedAction<Void> pa =
+                            new PrivilegedSetTccl(oldTccl);
+                        AccessController.doPrivileged(pa);
+                    } else {
+                        Thread.currentThread().setContextClassLoader(oldTccl);
+                    }
                 }
             }
 
@@ -1732,6 +1744,21 @@
     }
 
 
+    private static class PrivilegedSetTccl
+    implements PrivilegedAction<Void> {
+
+        private ClassLoader cl;
+
+        PrivilegedSetTccl(ClassLoader cl) {
+            this.cl = cl;
+        }
+
+        public Void run() {
+            Thread.currentThread().setContextClassLoader(cl);
+            return null;
+        }
+    }
+
 }
 
 



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

Reply via email to