From b7172f12ca385612df639caec852c93cbf0738df Mon Sep 17 00:00:00 2001 From: Matt Bishop Date: Sun, 29 May 2016 12:12:31 -0700 Subject: [PATCH] SHIRO-564 lower-case wildcard string before building subparts so that the subparts list is not created twice for case-insensitive strings. --- .../authz/permission/WildcardPermission.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java index cb9d14ec47..54032a3ec1 100644 --- a/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java +++ b/core/src/main/java/org/apache/shiro/authz/permission/WildcardPermission.java @@ -154,14 +154,16 @@ protected void setParts(String wildcardString, boolean caseSensitive) { throw new IllegalArgumentException("Wildcard string cannot be null or empty. Make sure permission strings are properly formatted."); } + if (!caseSensitive) { + wildcardString = wildcardString.toLowerCase(); + } + List parts = CollectionUtils.asList(wildcardString.split(PART_DIVIDER_TOKEN)); this.parts = new ArrayList>(); for (String part : parts) { Set subparts = CollectionUtils.asSet(part.split(SUBPART_DIVIDER_TOKEN)); - if (!caseSensitive) { - subparts = lowercase(subparts); - } + if (subparts.isEmpty()) { throw new IllegalArgumentException("Wildcard string cannot contain parts with only dividers. Make sure permission strings are properly formatted."); } @@ -173,14 +175,6 @@ protected void setParts(String wildcardString, boolean caseSensitive) { } } - private Set lowercase(Set subparts) { - Set lowerCasedSubparts = new LinkedHashSet(subparts.size()); - for (String subpart : subparts) { - lowerCasedSubparts.add(subpart.toLowerCase()); - } - return lowerCasedSubparts; - } - /*-------------------------------------------- | A C C E S S O R S / M O D I F I E R S | ============================================*/