Procházet zdrojové kódy

Class.gerDeclaredMethod() needs to happen in a privileged block


git-svn-id: http://anonsvn.jboss.org/repos/javassist/trunk@311 30ef5769-5b8d-40dd-aea6-55b5d6557bb3
tags/rel_3_17_1_ga
kkhan před 18 roky
rodič
revize
81ef701676
1 změnil soubory, kde provedl 18 přidání a 10 odebrání
  1. 18
    10
      src/main/javassist/ClassPool.java

+ 18
- 10
src/main/javassist/ClassPool.java Zobrazit soubor

@@ -21,6 +21,9 @@ import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.security.AccessController;
import java.security.PrivilegedActionException;
import java.security.PrivilegedExceptionAction;
import java.security.ProtectionDomain;
import java.util.Hashtable;
import java.util.Iterator;
@@ -67,17 +70,22 @@ public class ClassPool {

static {
try {
Class cl = Class.forName("java.lang.ClassLoader");
defineClass1 = cl.getDeclaredMethod("defineClass",
new Class[] { String.class, byte[].class,
int.class, int.class });

defineClass2 = cl.getDeclaredMethod("defineClass",
new Class[] { String.class, byte[].class,
int.class, int.class, ProtectionDomain.class });
AccessController.doPrivileged(new PrivilegedExceptionAction(){
public Object run() throws Exception{
Class cl = Class.forName("java.lang.ClassLoader");
defineClass1 = cl.getDeclaredMethod("defineClass",
new Class[] { String.class, byte[].class,
int.class, int.class });

defineClass2 = cl.getDeclaredMethod("defineClass",
new Class[] { String.class, byte[].class,
int.class, int.class, ProtectionDomain.class });
return null;
}
});
}
catch (Exception e) {
throw new RuntimeException("cannot initialize ClassPool");
catch (PrivilegedActionException pae) {
throw new RuntimeException("cannot initialize ClassPool", pae.getException());
}
}


Načítá se…
Zrušit
Uložit