Allow for empty condition/permission infos, make the name optional, and parse ALLOW/DENY policy case insensitv (FELIX-2922).
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1169675 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/framework.security/src/main/java/org/apache/felix/framework/security/condpermadmin/ConditionalPermissionInfoImpl.java b/framework.security/src/main/java/org/apache/felix/framework/security/condpermadmin/ConditionalPermissionInfoImpl.java
index 51927cf..102ace1 100644
--- a/framework.security/src/main/java/org/apache/felix/framework/security/condpermadmin/ConditionalPermissionInfoImpl.java
+++ b/framework.security/src/main/java/org/apache/felix/framework/security/condpermadmin/ConditionalPermissionInfoImpl.java
@@ -253,11 +253,12 @@
public ConditionalPermissionInfoImpl(String encoded)
{
encoded = encoded.trim();
- if (!(encoded.startsWith("ALLOW {") || encoded.startsWith("DENY {")))
+ String toUpper = encoded.toUpperCase();
+ if (!(toUpper.startsWith("ALLOW {") || toUpper.startsWith("DENY {")))
{
throw new IllegalArgumentException();
}
- m_allow = encoded.startsWith("ALLOW {");
+ m_allow = toUpper.startsWith("ALLOW {");
m_cpai = null;
List conditions = new ArrayList();
List permissions = new ArrayList();
@@ -302,7 +303,7 @@
m_name = unescapeString(chars, begin, idx);
}
else {
- throw new IllegalArgumentException("Expected conditional permission info name");
+ m_name = Long.toString(RANDOM.nextLong() ^ System.currentTimeMillis());
}
} catch (ArrayIndexOutOfBoundsException ex) {
ex.printStackTrace();
@@ -333,8 +334,8 @@
m_allow = access;
m_name = Long.toString(RANDOM.nextLong() ^ System.currentTimeMillis());
m_cpai = cpai;
- m_conditions = conditions;
- m_permissions = permisions;
+ m_conditions = conditions == null ? CONDITION_INFO : conditions;
+ m_permissions = permisions == null ? PERMISSION_INFO : permisions;
}
public ConditionalPermissionInfoImpl(String name,
@@ -344,8 +345,8 @@
m_allow = access;
m_name = (name != null) ? name : Long.toString(RANDOM.nextLong()
^ System.currentTimeMillis());
- m_conditions = conditions;
- m_permissions = permisions;
+ m_conditions = conditions == null ? CONDITION_INFO : conditions;
+ m_permissions = permisions == null ? PERMISSION_INFO : permisions;
m_cpai = cpai;
}