You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ku...@apache.org on 2023/09/28 06:25:41 UTC
[struts] 01/01: WW-5348 Introduce protected #logPatternChange method
This is an automated email from the ASF dual-hosted git repository.
kusal pushed a commit to branch WW-5348-patterns-logging
in repository https://gitbox.apache.org/repos/asf/struts.git
commit ebaec639c67b4eb4e3c746819ec3b8fa5e7deeb5
Author: Kusal Kithul-Godage <gi...@kusal.io>
AuthorDate: Thu Sep 28 16:25:30 2023 +1000
WW-5348 Introduce protected #logPatternChange method
---
.../security/DefaultAcceptedPatternsChecker.java | 43 ++++++++++------------
1 file changed, 19 insertions(+), 24 deletions(-)
diff --git a/core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java b/core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
index 9b1704cd1..0896fec82 100644
--- a/core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
+++ b/core/src/main/java/com/opensymphony/xwork2/security/DefaultAcceptedPatternsChecker.java
@@ -43,7 +43,7 @@ public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
"\\w+([:]?\\w+)?((\\.\\w+)|(\\[\\d+])|(\\(\\d+\\))|(\\['(\\w-?|[\\u4e00-\\u9fa5]-?)+'])|(\\('(\\w-?|[\\u4e00-\\u9fa5]-?)+'\\)))*([!]?\\w+)?"
};
- private Set<Pattern> acceptedPatterns;
+ protected Set<Pattern> acceptedPatterns;
public DefaultAcceptedPatternsChecker() {
setAcceptedPatterns(ACCEPTED_PATTERNS);
@@ -62,28 +62,19 @@ public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
@Inject(value = StrutsConstants.STRUTS_OVERRIDE_ACCEPTED_PATTERNS, required = false)
protected void setOverrideAcceptedPatterns(String acceptablePatterns) {
- LOG.warn("Overriding accepted patterns [{}] with [{}], be aware that this affects all instances and safety of your application!",
- acceptedPatterns, acceptablePatterns);
- acceptedPatterns = new HashSet<>();
- try {
- for (String pattern : TextParseUtil.commaDelimitedStringToSet(acceptablePatterns)) {
- acceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
- }
- } finally {
- acceptedPatterns = Collections.unmodifiableSet(acceptedPatterns);
- }
+ setAcceptedPatterns(acceptablePatterns);
}
@Inject(value = StrutsConstants.STRUTS_ADDITIONAL_ACCEPTED_PATTERNS, required = false)
protected void setAdditionalAcceptedPatterns(String acceptablePatterns) {
LOG.warn("Adding additional global patterns [{}] to accepted patterns!", acceptablePatterns);
- acceptedPatterns = new HashSet<>(acceptedPatterns); // Make mutable before adding
+ Set<Pattern> newAcceptedPatterns = new HashSet<>(acceptedPatterns);
try {
for (String pattern : TextParseUtil.commaDelimitedStringToSet(acceptablePatterns)) {
- acceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
+ newAcceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
}
} finally {
- acceptedPatterns = Collections.unmodifiableSet(acceptedPatterns);
+ acceptedPatterns = Collections.unmodifiableSet(newAcceptedPatterns);
}
}
@@ -99,20 +90,24 @@ public class DefaultAcceptedPatternsChecker implements AcceptedPatternsChecker {
@Override
public void setAcceptedPatterns(Set<String> patterns) {
- if (acceptedPatterns == null) {
- // Limit unwanted log entries (for 1st call, acceptedPatterns null)
- LOG.debug("Sets accepted patterns to [{}], note this impacts the safety of your application!", patterns);
- } else {
- LOG.warn("Replacing accepted patterns [{}] with [{}], be aware that this affects all instances and safety of your application!",
- acceptedPatterns, patterns);
- }
- acceptedPatterns = new HashSet<>(patterns.size());
+ logPatternChange(patterns);
+ Set<Pattern> newAcceptedPatterns = new HashSet<>(patterns.size());
try {
for (String pattern : patterns) {
- acceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
+ newAcceptedPatterns.add(Pattern.compile(pattern, Pattern.CASE_INSENSITIVE));
}
} finally {
- acceptedPatterns = Collections.unmodifiableSet(acceptedPatterns);
+ acceptedPatterns = Collections.unmodifiableSet(newAcceptedPatterns);
+ }
+ }
+
+ protected void logPatternChange(Set<String> newPatterns) {
+ if (acceptedPatterns == null) {
+ // No need to warn on class initialisation
+ LOG.debug("Sets accepted patterns to [{}], note this impacts the safety of your application!", newPatterns);
+ } else {
+ LOG.warn("Replacing accepted patterns [{}] with [{}], be aware that this affects all instances and safety of your application!",
+ acceptedPatterns, newPatterns);
}
}