Author: jkf
Date: Mon Apr 23 14:49:24 2007
New Revision: 531625
URL: http://svn.apache.org/viewvc?view=rev&rev=531625
Log:
pr 41766 permissions for AllPermission not working correctly.
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/src/main/org/apache/tools/ant/types/Permissions.java
Modified: ant/core/trunk/WHATSNEW
URL:
http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?view=diff&rev=531625&r1=531624&r2=531625
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Mon Apr 23 14:49:24 2007
@@ -6,6 +6,10 @@
Fixed bugs:
-----------
+* Error in handling of some permissions, most notably the AllPermission on
+ jdk 1.5
+ Bugzilla report 41776
+
* Replace task summary output incorrect.
Bugzilla report 41544
Modified: ant/core/trunk/src/main/org/apache/tools/ant/types/Permissions.java
URL:
http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/types/Permissions.java?view=diff&rev=531625&r1=531624&r2=531625
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/types/Permissions.java
(original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/types/Permissions.java Mon Apr
23 14:49:24 2007
@@ -18,6 +18,7 @@
package org.apache.tools.ant.types;
+import java.lang.reflect.Constructor;
import java.security.UnresolvedPermission;
import java.util.HashSet;
import java.util.Iterator;
@@ -50,6 +51,9 @@
private SecurityManager origSm = null;
private boolean active = false;
private boolean delegateToOldSM;
+
+ // Mandatory constructor for permission object.
+ private static final Class[] PARAMS = { String.class, String.class};
/**
* Create a set of Permissions. Equivalent to calling
@@ -113,10 +117,10 @@
for (Iterator i = grantedPermissions.listIterator(); i.hasNext();) {
Permissions.Permission p = (Permissions.Permission) i.next();
if (p.getClassName() == null) {
- throw new BuildException("Granted permission " + p + " does
not contain a class.");
+ throw new BuildException("Granted permission " + p
+ + " does not contain a class.");
} else {
- java.security.Permission perm =
- new UnresolvedPermission(p.getClassName(), p.getName(),
p.getActions(), null);
+ java.security.Permission perm = createPermission(p);
granted.add(perm);
}
}
@@ -142,6 +146,24 @@
granted.add(new java.util.PropertyPermission("java.vm.version",
"read"));
granted.add(new java.util.PropertyPermission("java.vm.vendor",
"read"));
granted.add(new java.util.PropertyPermission("java.vm.name", "read"));
+ }
+
+ private java.security.Permission createPermission(
+ Permissions.Permission permission) {
+ try {
+ // First add explicitly already resolved permissions will not be
+ // resolved when added as unresolved permission.
+ Class clazz = Class.forName(permission.getClassName());
+ String name = permission.getName();
+ String actions = permission.getActions();
+ Constructor ctr = clazz.getConstructor(PARAMS);
+ return (java.security.Permission) ctr.newInstance(new Object[] {
+ name, actions });
+ } catch (Exception e) {
+ // Let the UnresolvedPermission handle it.
+ return new UnresolvedPermission(permission.getClassName(),
+ permission.getName(), permission.getActions(), null);
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]