[jboss-cvs] JBossAS SVN: r75109 - projects/aop/trunk/aop/src/main/org/jboss/aop/instrument.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jun 26 07:19:10 EDT 2008
Author: kabir.khan at jboss.com
Date: 2008-06-26 07:19:10 -0400 (Thu, 26 Jun 2008)
New Revision: 75109
Modified:
projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java
Log:
[JBAOP-604] Wrap calls to CtClass.debugWriteFile() in a privileged block
Modified: projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java
===================================================================
--- projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java 2008-06-26 10:33:16 UTC (rev 75108)
+++ projects/aop/trunk/aop/src/main/org/jboss/aop/instrument/TransformerCommon.java 2008-06-26 11:19:10 UTC (rev 75109)
@@ -28,6 +28,7 @@
import java.net.URL;
import java.net.URLClassLoader;
import java.security.AccessController;
+import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.security.ProtectionDomain;
@@ -110,7 +111,7 @@
if (AspectManager.debugClasses)
{
- newClass.debugWriteFile();
+ debugWriteFile(newClass);
}
}
catch (Exception e)
@@ -147,6 +148,18 @@
return ToClassAction.PRIVILEGED.toClass(newClass, loader, pd);
}
}
+
+ public static void debugWriteFile(CtClass clazz)
+ {
+ if (System.getSecurityManager() == null)
+ {
+ DebugWriteFileAction.NON_PRIVILEGED.debugWriteFile(clazz);
+ }
+ else
+ {
+ DebugWriteFileAction.PRIVILEGED.debugWriteFile(clazz);
+ }
+ }
protected static void addInfoField(Instrumentor instrumentor, String infoClassName, String infoName,
int modifiers, CtClass addTo, boolean weak, CtField.Initializer init) throws NotFoundException, CannotCompileException
@@ -294,4 +307,32 @@
}
};
}
+
+ private interface DebugWriteFileAction
+ {
+ void debugWriteFile(CtClass clazz);
+
+ DebugWriteFileAction PRIVILEGED = new DebugWriteFileAction()
+ {
+ public void debugWriteFile(final CtClass clazz)
+ {
+ AccessController.doPrivileged(new PrivilegedAction<Object>()
+ {
+ public Object run()
+ {
+ clazz.debugWriteFile();
+ return null;
+ }
+ });
+ }
+ };
+
+ DebugWriteFileAction NON_PRIVILEGED = new DebugWriteFileAction()
+ {
+ public void debugWriteFile(CtClass clazz)
+ {
+ clazz.debugWriteFile();
+ }
+ };
+ }
}
More information about the jboss-cvs-commits
mailing list