From 7f269187c5081c6a2f17baaffa8f2955b9547b99 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Fri, 27 Jan 2012 12:38:00 +0000 Subject: do not allow inherited permissions to negate higher perms. --- EssentialsGroupManager/src/Changelog.txt | 3 ++- .../groupmanager/permissions/AnjoPermissionsHandler.java | 8 ++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'EssentialsGroupManager/src') diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 5155d6181..224f2763c 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -122,4 +122,5 @@ v 1.9: - Fixed subgroups (I broke earlier). - Check for a null player object in the PlayerTeleportEvent. - Trap errors in fetching the mirrors map. - - Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet. \ No newline at end of file + - Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet. + - do not allow inherited permissions to negate higher perms. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java index de42ce9c3..429a9553f 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/AnjoPermissionsHandler.java @@ -135,9 +135,13 @@ public class AnjoPermissionsHandler extends PermissionsReaderInterface { } // Add all group permissions, unless negated by direct player perms. - for (String perm : groupPermArray) - if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm))) + for (String perm : groupPermArray) { + // Perm doesn't already exists and there is no negation for it + // It's not a negated perm where a normal perm exists (don't allow inheritance to negate higher perms) + if ((!playerPermArray.contains(perm)) && (!playerPermArray.contains("-" + perm)) + && (!perm.startsWith("-") && (!playerPermArray.contains(perm.substring(1))))) playerPermArray.add(perm); + } } // Collections.sort(playerPermArray, -- cgit v1.2.3