OSDN Git Service

PR libgcj/27352
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 May 2006 15:09:57 +0000 (15:09 +0000)
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 17 May 2006 15:09:57 +0000 (15:09 +0000)
        * java/lang/Class.java (getClassLoaderInternal): New method.
        (forName (String, Class)): Use getClassLoaderInternal.
        (getPackage): Likewise.
        (getResource): Likewise.
        (getResourceAsStream): Likewise.
        (desiredAssertionStatus): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@113863 138bc75d-0d04-0410-961f-82ee72b054a4

libjava/ChangeLog
libjava/java/lang/Class.java

index 21397c1..7647cdf 100644 (file)
@@ -1,3 +1,13 @@
+2006-05-15  Bryce McKinlay  <mckinlay@redhat.com>
+
+       PR libgcj/27352
+       * java/lang/Class.java (getClassLoaderInternal): New method.
+       (forName (String, Class)): Use getClassLoaderInternal.
+       (getPackage): Likewise.
+       (getResource): Likewise.
+       (getResourceAsStream): Likewise.
+       (desiredAssertionStatus): Likewise.
+
 2006-05-15  Andreas Tobler  <a.tobler@schweiz.ch>
 
        * stacktrace.cc (StackTrace::FillInFrameInfo): Use
index 66b85c7..db2bf72 100644 (file)
@@ -115,7 +115,7 @@ public final class Class implements Serializable
   private static Class forName (String className, Class caller)
     throws ClassNotFoundException
   {
-    return forName(className, true, caller.getClassLoader());
+    return forName(className, true, caller.getClassLoaderInternal());
   }
 
 
@@ -192,10 +192,19 @@ public final class Class implements Serializable
    * @see RuntimePermission
    */
   public native ClassLoader getClassLoader ();
-  
+
   // A private internal method that is called by compiler-generated code.
   private final native ClassLoader getClassLoader (Class caller);
-  
+
+  /**
+   *  Internal method that circumvents the usual security checks when 
+   *  getting the class loader.
+   */
+  private ClassLoader getClassLoaderInternal ()
+  {
+    return loader;
+  }
+
   /**
    * If this is an array, get the Class representing the type of array.
    * Examples: "[[Ljava.lang.String;" would return "[Ljava.lang.String;", and
@@ -473,7 +482,7 @@ public final class Class implements Serializable
    */
   public Package getPackage()
   {
-    ClassLoader cl = getClassLoader();
+    ClassLoader cl = getClassLoaderInternal();
     if (cl != null)
       return cl.getPackage(getPackagePortion(getName()));
     else
@@ -616,7 +625,7 @@ public final class Class implements Serializable
   public URL getResource(String resourceName)
   {
     String name = resourcePath(resourceName);
-    ClassLoader loader = getClassLoader();
+    ClassLoader loader = getClassLoaderInternal();
     if (loader == null)
       return ClassLoader.getSystemResource(name);
     return loader.getResource(name);
@@ -644,7 +653,7 @@ public final class Class implements Serializable
   public InputStream getResourceAsStream(String resourceName)
   {
     String name = resourcePath(resourceName);
-    ClassLoader loader = getClassLoader();
+    ClassLoader loader = getClassLoaderInternal();
     if (loader == null)
       return ClassLoader.getSystemResourceAsStream(name);
     return loader.getResourceAsStream(name);
@@ -839,7 +848,7 @@ public final class Class implements Serializable
    */
   public boolean desiredAssertionStatus()
   {
-    ClassLoader c = getClassLoader();
+    ClassLoader c = getClassLoaderInternal();
     Object status;
     if (c == null)
       return VMClassLoader.defaultAssertionStatus();