[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