diff --git a/changelog.txt b/changelog.txt index efe7721445..636bc4e8e6 100644 --- a/changelog.txt +++ b/changelog.txt @@ -6,6 +6,7 @@ Changes in version 0.x (2004-xx-xx) * Extracted removeUserFromCache(String) to UserCache interface * Fixed EH-CACHE-based caching implementation behaviour when cache exists * Fixed Ant "release" target not including project.properties +* Fixed GrantedAuthorityEffectiveAclsResolver if null ACLs provided to method * Documentation improvements Changes in version 0.6 (2004-08-09) diff --git a/core/src/main/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolver.java b/core/src/main/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolver.java index d98e9760f9..9a9ccf8a5a 100644 --- a/core/src/main/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolver.java +++ b/core/src/main/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolver.java @@ -59,6 +59,10 @@ public class GrantedAuthorityEffectiveAclsResolver public AclEntry[] resolveEffectiveAcls(AclEntry[] allAcls, Authentication filteredBy) { + if ((allAcls == null) || (allAcls.length == 0)) { + return null; + } + List list = new Vector(); for (int i = 0; i < allAcls.length; i++) { diff --git a/core/src/test/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolverTests.java b/core/src/test/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolverTests.java index 1d2a9631df..ba8babc322 100644 --- a/core/src/test/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolverTests.java +++ b/core/src/test/java/org/acegisecurity/acl/basic/GrantedAuthorityEffectiveAclsResolverTests.java @@ -104,6 +104,11 @@ public class GrantedAuthorityEffectiveAclsResolverTests extends TestCase { resolver.resolveEffectiveAcls(acls, scott)[2]); } + public void testResolveAclsReturnsNullIfNoAclsInFirstPlace() { + GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver(); + assertNull(resolver.resolveEffectiveAcls(null, scott)); + } + public void testSkipsNonBasicAclEntryObjects() { GrantedAuthorityEffectiveAclsResolver resolver = new GrantedAuthorityEffectiveAclsResolver(); AclEntry[] basicAcls = {entry100Marissa, entry100Scott, entry100RoleEverybody, entry100RoleOne, new MockAcl(), entry100RoleTwo};