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: [email protected]
For additional commands, e-mail: [email protected]