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]

Reply via email to