SLING-3010 integrate patch from Anjan. Added integration tests to guard against future regressions.

git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1513729 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java b/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java
index e0b6fc8..ada6e69 100644
--- a/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java
+++ b/src/main/java/org/apache/sling/jcr/base/util/AccessControlUtil.java
@@ -484,6 +484,9 @@
 		if (privilege.isAggregate()) {
 			Privilege[] privileges = privilege.getAggregatePrivileges();
 			for (Privilege disaggregate : privileges) {
+				if (disaggregate.isAggregate()) {
+					continue; //nested aggregate, so skip it since the privileges are already included.
+				}
 				disaggregatedPrivilegeNames.add(disaggregate.getName());
 			}
 		} else {