diff options
Diffstat (limited to 'java/lang/Class.java')
| -rw-r--r-- | java/lang/Class.java | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/java/lang/Class.java b/java/lang/Class.java index 7bd3a3b09..d3bc1dea4 100644 --- a/java/lang/Class.java +++ b/java/lang/Class.java @@ -38,6 +38,8 @@ exception statement from your version. */ package java.lang; +import gnu.classpath.VMStackWalker; + import java.io.InputStream; import java.io.Serializable; import java.lang.reflect.Constructor; @@ -157,7 +159,7 @@ public final class Class implements Serializable Class result = VMClass.forName (name); if (result == null) result = Class.forName(name, true, - VMSecurityManager.getClassContext()[1].getClassLoader()); + VMStackWalker.getCallingClassLoader()); return result; } @@ -198,9 +200,8 @@ public final class Class implements Serializable SecurityManager sm = SecurityManager.current; if (sm != null) { - // Get the calling class and classloader - Class c = VMSecurityManager.getClassContext()[1]; - ClassLoader cl = c.getClassLoader(); + // Get the calling classloader + ClassLoader cl = VMStackWalker.getCallingClassLoader(); if (cl != null) sm.checkPermission(new RuntimePermission("getClassLoader")); } @@ -278,9 +279,8 @@ public final class Class implements Serializable SecurityManager sm = SecurityManager.current; if (sm != null) { - // Get the calling class and classloader - Class c = VMSecurityManager.getClassContext()[1]; - ClassLoader cl = VMClass.getClassLoader(c); + // Get the calling classloader + ClassLoader cl = VMStackWalker.getCallingClassLoader(); if (cl != null && !cl.isAncestorOf(loader)) sm.checkPermission(new RuntimePermission("getClassLoader")); } @@ -1132,8 +1132,9 @@ public final class Class implements Serializable int modifiers = constructor.getModifiers(); if (!Modifier.isPublic(modifiers)) { - Class caller = VMSecurityManager.getClassContext()[1]; - if (caller != this && + Class caller = VMStackWalker.getCallingClass(); + if (caller != null && + caller != this && (Modifier.isPrivate(modifiers) || getClassLoader() != caller.getClassLoader() || !getPackagePortion(getName()) |
