OSDN Git Service

PR libgcj/46774: Create dynamic ProtectionDomain instances which check the system...
authorgandalf <gandalf@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Dec 2010 19:48:07 +0000 (19:48 +0000)
committergandalf <gandalf@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 16 Dec 2010 19:48:07 +0000 (19:48 +0000)
2010-12-13  Andrew John Hughes  <ahughes@redhat.com>

PR libgcj/46774
* libjava/java/security/VMAccessController.java:
(DEFAULT_CONTEXT): Create ProtectionDomain with
four argument constructor (arguments are the same
as those implied by the two argument constructor).
(getContext()): Create ProtectionDomain instances
with four argument constructor using a null Principal
array (as before) but including the classloader, which
was always null before.

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

libjava/ChangeLog
libjava/classpath/lib/java/security/VMAccessController.class
libjava/java/security/VMAccessController.java

index 16cfc79..c53120d 100644 (file)
@@ -1,3 +1,15 @@
+2010-12-13  Andrew John Hughes  <ahughes@redhat.com>
+
+       PR libgcj/46774
+       * libjava/java/security/VMAccessController.java:
+       (DEFAULT_CONTEXT): Create ProtectionDomain with
+       four argument constructor (arguments are the same
+       as those implied by the two argument constructor).
+       (getContext()): Create ProtectionDomain instances
+       with four argument constructor using a null Principal
+       array (as before) but including the classloader, which
+       was always null before.
+
 2010-12-06  Dave Korn  <dave.korn.cygwin@gmail.com>
 
        PR target/40125
index d05cd9c..9a12980 100644 (file)
Binary files a/libjava/classpath/lib/java/security/VMAccessController.class and b/libjava/classpath/lib/java/security/VMAccessController.class differ
index 8436c9c..d214e19 100644 (file)
@@ -56,7 +56,7 @@ final class VMAccessController
     Permissions permissions = new Permissions();
     permissions.add(new AllPermission());
     ProtectionDomain[] domain = new ProtectionDomain[] {
-      new ProtectionDomain(source, permissions)
+      new ProtectionDomain(source, permissions, null, null)
     };
     DEFAULT_CONTEXT = new AccessControlContext(domain);
   }
@@ -121,7 +121,7 @@ final class VMAccessController
     LinkedList stack = state.getContexts();
     if (!stack.isEmpty())
       {
-       stack.removeFirst();
+        stack.removeFirst();
       }
     else if (DEBUG)
       {
@@ -178,26 +178,27 @@ final class VMAccessController
     for (int i = 3; i < classes.length; i++)
       {
         Class clazz = classes[i];
+        ClassLoader loader = clazz.getClassLoader();
 
         if (DEBUG)
           {
             debug("checking " + clazz);
             // subject to getClassLoader RuntimePermission
-            debug("loader = " + clazz.getClassLoader());
+            debug("loader = " + loader);
           }
 
         if (privileged && i == classes.length - 2)
           {
             // If there was a call to doPrivileged with a supplied context,
-            // return that context. If using JAAS doAs*, it should be 
-           // a context with a SubjectDomainCombiner
+            // return that context. If using JAAS doAs*, it should be
+            // a context with a SubjectDomainCombiner
             LinkedList l = state.getContexts();
             if (!l.isEmpty())
               context = (AccessControlContext) l.getFirst();
           }
 
         // subject to getProtectionDomain RuntimePermission
-       ProtectionDomain domain = clazz.getProtectionDomain();
+        ProtectionDomain domain = clazz.getProtectionDomain();
 
         if (domain == null)
           continue;
@@ -208,7 +209,8 @@ final class VMAccessController
         // Create a static snapshot of this domain, which may change over time
         // if the current policy changes.
         domains.add(new ProtectionDomain(domain.getCodeSource(),
-                                         domain.getPermissions()));
+                                         domain.getPermissions(),
+                                         loader, null));
       }
 
     if (DEBUG)