Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-6021

[java6][classlib][security] Policy getPermissions(ProtectionDomain) may return different type of PermissionCollection from RI

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 5.0M8
    • 5.0M9
    • Classlib
    • None
    • Patch Available

    Description

      ---------
      Test
      ---------
      private static class MockPermission extends BasicPermission{

      public MockPermission(String name)

      { super(name); }

      public MockPermission(String name, String action)

      { super(name,action); }

      }

      static class MockPermissions extends PermissionCollection{
      private Vector<Permission> permissions = new Vector();

      @Override
      public void add(Permission permission) {
      if(this.isReadOnly())

      { throw new java.lang.SecurityException(); }

      if(permission instanceof MockPermission)

      { permissions.add(permission); }

      }

      @Override
      public Enumeration<Permission> elements()

      { return permissions.elements(); }

      @Override
      public boolean implies(Permission permission) {
      if(permissions.size()==0)

      { return false; }

      if(permission instanceof MockPermission){
      for(Permission perm : permissions){
      if( perm.implies(permission))

      { return true; }

      }
      }

      return false;
      }

      }

      public void testGetPermissions() throws Exception{
      MockPermission read = new MockPermission("read");
      MockPermission write = new MockPermission("write");
      PermissionCollection readPC = new MockPermissions();
      readPC.add(read);
      ProtectionDomain pd = new ProtectionDomain(null, null);
      TestProvider policy = new TestProvider();
      policy.pc = readPC;
      PermissionCollection permissions = policy.getPermissions(pd);
      assertTrue(permissions instanceof MockPermissions);
      assertSame(permissions, readPC);
      assertTrue(permissions.implies(read));
      assertFalse(permissions.implies(write));
      }

      ----------------
      Description
      ----------------
      Harmony'll failed in this testcase since it returns a new Permissions instance rather than use the customized PermissionCollection.
      The new created Permissions have different implies contact which leads to the failures.
      It doesn't make sense to create a new Permissions here, since customer may extension the default permission and permission collection here.

      Attachments

        1. HARMONY-6021.diff
          13 kB
          Sean Qiu

        Activity

          People

            qiuxiaox Sean Qiu
            qiuxiaox Sean Qiu
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:

              Time Tracking

                Estimated:
                Original Estimate - 72h
                72h
                Remaining:
                Remaining Estimate - 72h
                72h
                Logged:
                Time Spent - Not Specified
                Not Specified