Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
JCR Jackrabbit Access Manager 2.1.0
-
None
Description
As described by Ray Davis on the jackrabbit-users mailing list (see http://www.mail-archive.com/users@jackrabbit.apache.org/msg14734.html ), the order of the ACEs in the AccessControlList is important for resolving conflicting group permissions. When resolving the permissions, if the current user is the member of multiple groups that have permissions specified, then the last group in the ACL wins if there are any conflicts.
The problem is that whenever the sling AccessControlUtil.replaceAccessControlEntry(..) api is invoked to merge changes to an ACE, the old ACE is removed from the ACL and re-added at the end of list of ACEs. Instead, the merge logic should ensure that the updated ACE is in the same position as the ACE that is being updated.