You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by da...@apache.org on 2006/12/30 04:20:56 UTC

svn commit: r491163 - in /incubator/openejb/trunk/openejb3/container: openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java openejb-javaagent/src/main/java/org/apache/openejb/javaagent/Agent.java

Author: dain
Date: Fri Dec 29 19:20:56 2006
New Revision: 491163

URL: http://svn.apache.org/viewvc?view=rev&rev=491163
Log:
Add permission check to Agent.  Add null checks when agent is not installed

Modified:
    incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    incubator/openejb/trunk/openejb3/container/openejb-javaagent/src/main/java/org/apache/openejb/javaagent/Agent.java

Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?view=diff&rev=491163&r1=491162&r2=491163
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Fri Dec 29 19:20:56 2006
@@ -55,6 +55,7 @@
 import java.util.Map;
 import java.util.Properties;
 import java.lang.instrument.ClassFileTransformer;
+import java.lang.instrument.Instrumentation;
 
 public class Assembler extends AssemblerTool implements org.apache.openejb.spi.Assembler {
 
@@ -241,7 +242,10 @@
 
         PersistenceClassLoaderHandler persistenceClassLoaderHandler = new PersistenceClassLoaderHandler() {
             public void addTransformer(ClassLoader classLoader, ClassFileTransformer classFileTransformer) {
-                Agent.getInstrumentation().addTransformer(classFileTransformer);
+                Instrumentation instrumentation = Agent.getInstrumentation();
+                if (instrumentation != null) {
+                    instrumentation.addTransformer(classFileTransformer);
+                }
             }
 
             public ClassLoader getNewTempClassLoader(ClassLoader classLoader) {

Modified: incubator/openejb/trunk/openejb3/container/openejb-javaagent/src/main/java/org/apache/openejb/javaagent/Agent.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-javaagent/src/main/java/org/apache/openejb/javaagent/Agent.java?view=diff&rev=491163&r1=491162&r2=491163
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-javaagent/src/main/java/org/apache/openejb/javaagent/Agent.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-javaagent/src/main/java/org/apache/openejb/javaagent/Agent.java Fri Dec 29 19:20:56 2006
@@ -18,8 +18,11 @@
 package org.apache.openejb.javaagent;
 
 import java.lang.instrument.Instrumentation;
+import java.lang.reflect.ReflectPermission;
+import java.security.Permission;
 
 public class Agent {
+    private static final Permission ACCESS_PERMISSION = new ReflectPermission("suppressAccessChecks");
     private static String agentArgs;
     private static Instrumentation instrumentation;
 
@@ -32,7 +35,14 @@
         return agentArgs;
     }
 
+    /**
+     * Gets the instrumentation instance.
+     * You must have java.lang.ReflectPermission(suppressAccessChecks) to call this method
+     * @return the instrumentation instance
+     */
     public static Instrumentation getInstrumentation() {
+        SecurityManager sm = System.getSecurityManager();
+        if (sm != null) sm.checkPermission(ACCESS_PERMISSION);
         return instrumentation;
     }
 }