[jboss-cvs] JBossAS SVN: r107582 - projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Aug 13 05:46:29 EDT 2010
Author: kabir.khan at jboss.com
Date: 2010-08-13 05:46:28 -0400 (Fri, 13 Aug 2010)
New Revision: 107582
Modified:
projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java
projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java
Log:
[JBAOP-798] Privileged block in ClassProxyFactory.populateMethodTables()
Modified: projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java
===================================================================
--- projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java 2010-08-13 08:28:10 UTC (rev 107581)
+++ projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/ClassProxyFactory.java 2010-08-13 09:46:28 UTC (rev 107582)
@@ -365,7 +365,7 @@
if (superclass == null) return;
if (superclass.getName().equals("java.lang.Object")) return;
- Method[] declaredMethods = superclass.getDeclaredMethods();
+ Method[] declaredMethods = SecurityActions.getDeclaredMethods(superclass);
for (int i = 0; i < declaredMethods.length; i++)
{
if (ClassAdvisor.isAdvisable(declaredMethods[i]))
Modified: projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java
===================================================================
--- projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java 2010-08-13 08:28:10 UTC (rev 107581)
+++ projects/aop/branches/JBoss_AOP_2_1_6_GA_CP/aop/src/main/java/org/jboss/aop/proxy/SecurityActions.java 2010-08-13 09:46:28 UTC (rev 107582)
@@ -22,6 +22,7 @@
package org.jboss.aop.proxy;
import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Method;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.security.PrivilegedActionException;
@@ -134,4 +135,40 @@
return GetClassLoaderAction.PRIVILEGED.getClassLoader(clazz);
}
}
+
+ interface GetDeclaredMethodsAction
+ {
+ Method[] getDeclaredMethods(Class<?> clazz);
+
+ GetDeclaredMethodsAction NON_PRIVILEGED = new GetDeclaredMethodsAction() {
+
+ public Method[] getDeclaredMethods(Class<?> clazz)
+ {
+ return clazz.getDeclaredMethods();
+ }};
+
+ GetDeclaredMethodsAction PRIVILEGED = new GetDeclaredMethodsAction() {
+
+ public Method[] getDeclaredMethods(final Class<?> clazz)
+ {
+ return AccessController.doPrivileged(new PrivilegedAction<Method[]>() {
+
+ public Method[] run()
+ {
+ return clazz.getDeclaredMethods();
+ }});
+ }};
+ }
+
+ static Method[] getDeclaredMethods(Class<?> clazz)
+ {
+ if (System.getSecurityManager() == null)
+ {
+ return GetDeclaredMethodsAction.NON_PRIVILEGED.getDeclaredMethods(clazz);
+ }
+ else
+ {
+ return GetDeclaredMethodsAction.PRIVILEGED.getDeclaredMethods(clazz);
+ }
+ }
}
More information about the jboss-cvs-commits
mailing list