From bb68ce6ae5a3cff8f35844f4533c4007370c30e8 Mon Sep 17 00:00:00 2001 From: Kusal Kithul-Godage Date: Mon, 21 Aug 2023 23:31:31 +1000 Subject: [PATCH] WW-5337 Catch PatternSyntaxException and ensure ConfigurationException thrown --- .../com/opensymphony/xwork2/ognl/OgnlUtil.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java index c6169afa9..be738be93 100644 --- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java +++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlUtil.java @@ -51,6 +51,9 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.atomic.AtomicBoolean; import java.util.regex.Pattern; +import java.util.regex.PatternSyntaxException; + +import static com.opensymphony.xwork2.util.TextParseUtil.commaDelimitedStringToSet; /** @@ -218,14 +221,13 @@ public class OgnlUtil { } private Set parseExcludedPackageNamePatterns(String commaDelimitedPackagePatterns) { - Set packagePatterns = TextParseUtil.commaDelimitedStringToSet(commaDelimitedPackagePatterns); - Set packageNamePatterns = new HashSet<>(); - - for (String pattern : packagePatterns) { - packageNamePatterns.add(Pattern.compile(pattern)); + try { + return commaDelimitedStringToSet(commaDelimitedPackagePatterns) + .stream().map(Pattern::compile).collect(toSet()); + } catch (PatternSyntaxException e) { + throw new ConfigurationException( + "Excluded package name patterns could not be parsed due to invalid regex: " + commaDelimitedPackagePatterns, e); } - - return packageNamePatterns; } @Inject(value = StrutsConstants.STRUTS_EXCLUDED_PACKAGE_NAMES, required = false)