summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNasser Grainawi <nasser@codeaurora.org>2021-08-26 17:36:31 -0600
committerNasser Grainawi <nasser@codeaurora.org>2021-08-30 16:53:50 -0600
commit854e55ec22dadfc76b1112eb086f0d20dd4a977c (patch)
tree6913ac1b3589f0ebcffc835b6e6a31deca58f4e3
parent7b81b32a08fb5e711236c2a51871208025574135 (diff)
ListAccess: Fix incorrect behavior when group appears twice for same rule
Later versions docs [1] have been updated to say that only a single rule is picked and that it is the first rule. That description matches the implementation for ACL evaluation in this version, but the REST API '/access/?project=<project>' returns the wrong value. [1] https://gerrit-review.googlesource.com/Documentation/access-control.html#_deny Change-Id: Ia20714cc8445b1f2d0c895fdc51ab72dc7ea0895 Bug: Issue 14963
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/access/ListAccess.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/access/ListAccess.java b/gerrit-server/src/main/java/com/google/gerrit/server/access/ListAccess.java
index 580897fecc..5065a8bed5 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/access/ListAccess.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/access/ListAccess.java
@@ -273,7 +273,7 @@ public class ListAccess implements RestReadView<TopLevelResource> {
exclusive = toBoolean(permission.getExclusiveGroup());
rules = Maps.newHashMap();
for (PermissionRule r : permission.getRules()) {
- rules.put(r.getGroup().getUUID().get(), new PermissionRuleInfo(r));
+ rules.putIfAbsent(r.getGroup().getUUID().get(), new PermissionRuleInfo(r)); // First entry for the group wins
}
}
}