From ee251bd931487e78b6c86f6b866b4daac3e6f3cf Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Tue, 13 Jan 2026 14:14:39 +0000 Subject: [PATCH 1/2] Remove duplicate method calls in AccessEvaluator methods --- .../access/impl/AccessEvaluatorImpl.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java b/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java index 6f34a69..c1cbd04 100644 --- a/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java +++ b/core/src/main/java/org/apache/accumulo/access/impl/AccessEvaluatorImpl.java @@ -20,6 +20,7 @@ import static org.apache.accumulo.access.impl.CharUtils.BACKSLASH; import static org.apache.accumulo.access.impl.CharUtils.QUOTE; +import static org.apache.accumulo.access.impl.CharUtils.isBackslashSymbol; import static org.apache.accumulo.access.impl.CharUtils.isQuoteOrSlash; import static org.apache.accumulo.access.impl.CharUtils.isQuoteSymbol; @@ -74,7 +75,8 @@ public AccessEvaluatorImpl(Authorizations authorizations, public static CharSequence unescape(CharSequence auth) { int escapeCharCount = 0; - for (int i = 0; i < auth.length(); i++) { + final int authLength = auth.length(); + for (int i = 0; i < authLength; i++) { char c = auth.charAt(i); if (isQuoteOrSlash(c)) { escapeCharCount++; @@ -86,11 +88,11 @@ public static CharSequence unescape(CharSequence auth) { throw new IllegalArgumentException("Illegal escape sequence in auth : " + auth); } - char[] unescapedCopy = new char[auth.length() - escapeCharCount / 2]; + char[] unescapedCopy = new char[authLength - escapeCharCount / 2]; int pos = 0; - for (int i = 0; i < auth.length(); i++) { + for (int i = 0; i < authLength; i++) { char c = auth.charAt(i); - if (c == BACKSLASH) { + if (isBackslashSymbol(c)) { i++; c = auth.charAt(i); if (!isQuoteOrSlash(c)) { @@ -120,17 +122,17 @@ public static CharSequence unescape(CharSequence auth) { */ public static CharSequence escape(CharSequence auth, boolean shouldQuote) { int escapeCount = 0; - - for (int i = 0; i < auth.length(); i++) { + final int authLength = auth.length(); + for (int i = 0; i < authLength; i++) { if (isQuoteOrSlash(auth.charAt(i))) { escapeCount++; } } if (escapeCount > 0 || shouldQuote) { - char[] escapedAuth = new char[auth.length() + escapeCount + (shouldQuote ? 2 : 0)]; + char[] escapedAuth = new char[authLength + escapeCount + (shouldQuote ? 2 : 0)]; int index = shouldQuote ? 1 : 0; - for (int i = 0; i < auth.length(); i++) { + for (int i = 0; i < authLength; i++) { char c = auth.charAt(i); if (isQuoteOrSlash(c)) { escapedAuth[index++] = BACKSLASH; From 11494bb492538f0f42bb2109318df631d78fb9c8 Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Thu, 15 Jan 2026 22:59:09 +0000 Subject: [PATCH 2/2] Remove duplicate calls to method in for loop --- .../org/apache/accumulo/access/AuthorizationValidator.java | 3 ++- .../org/apache/accumulo/access/impl/AccessExpressionImpl.java | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/org/apache/accumulo/access/AuthorizationValidator.java b/core/src/main/java/org/apache/accumulo/access/AuthorizationValidator.java index 7baa907..31dfef2 100644 --- a/core/src/main/java/org/apache/accumulo/access/AuthorizationValidator.java +++ b/core/src/main/java/org/apache/accumulo/access/AuthorizationValidator.java @@ -104,7 +104,8 @@ enum AuthorizationCharacters { } // Unsure what characters are present, so must validate them all. - for (int i = 0; i < auth.length(); i++) { + final int len = auth.length(); + for (int i = 0; i < len; i++) { var c = auth.charAt(i); if (!Character.isDefined(c) || Character.isISOControl(c) || c == '\uFFFD') { return false; diff --git a/core/src/main/java/org/apache/accumulo/access/impl/AccessExpressionImpl.java b/core/src/main/java/org/apache/accumulo/access/impl/AccessExpressionImpl.java index da611b6..1da6fb2 100644 --- a/core/src/main/java/org/apache/accumulo/access/impl/AccessExpressionImpl.java +++ b/core/src/main/java/org/apache/accumulo/access/impl/AccessExpressionImpl.java @@ -61,8 +61,8 @@ public static CharSequence quote(CharSequence term) { } boolean needsQuote = false; - - for (int i = 0; i < term.length(); i++) { + final int len = term.length(); + for (int i = 0; i < len; i++) { if (!Tokenizer.isValidAuthChar(term.charAt(i))) { needsQuote = true; break;