Author: bago
Date: Wed Feb 2 10:52:17 2011
New Revision: 1066409
URL: http://svn.apache.org/viewvc?rev=1066409&view=rev
Log:
Optimized valuetag validation regex so to limit stack abuse (JDKIM-26)
Modified:
james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java
Modified:
james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java
URL:
http://svn.apache.org/viewvc/james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java?rev=1066409&r1=1066408&r2=1066409&view=diff
==============================================================================
---
james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java
(original)
+++
james/jdkim/trunk/main/src/main/java/org/apache/james/jdkim/tagvalue/TagValue.java
Wed Feb 2 10:52:17 2011
@@ -39,10 +39,12 @@ public class TagValue {
private static Pattern tagPattern = Pattern
.compile("^[A-Za-z][A-Za-z0-9_]*$");
- private static final String tval = "[^; \t\r\n]+";
+ // Use possessive matching to avoid heavy stack usage
+ private static final String tval = "[^; \t\r\n]++";
// validate value chars
- private static Pattern valuePattern = Pattern.compile("^(" + tval
- + "((\r\n[\t ]|[\t ])+" + tval + ")*)?$");
+ // Use possessive matching to avoid heavy stack usage
+ private static Pattern valuePattern = Pattern.compile("^(?:" + tval
+ + "(?:(?:(?:\r\n)?[\t ])++" + tval + ")*+)?$");
// we may use a TreeMap because we may need to know original order.
private Map<String, CharSequence> tagValues;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]