Author: bago
Date: Thu Mar 31 11:07:54 2011
New Revision: 1087252

URL: http://svn.apache.org/viewvc?rev=1087252&view=rev
Log:
Fix backslash parsing inside quoted text (JSIEVE-74).
Patch contributed by Vishal Mahajan: thank you.

Modified:
    james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt
    james/jsieve/trunk/main/src/test/java/org/apache/jsieve/HeaderTest.java
    
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java

Modified: james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt?rev=1087252&r1=1087251&r2=1087252&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt (original)
+++ james/jsieve/trunk/main/src/main/jjtree/sieve/sieve.jjt Thu Mar 31 11:07:54 
2011
@@ -121,10 +121,14 @@ TOKEN : /* LITERALS */
 // note that newlines and other characters are all allowed strings
   < QUOTED_STRING:
       "\""
-      (~["\""]|"\\\"")*
+      (~["\"","\\"]|<ESCAPED_CHAR>)*
       "\""
   >
 |
+  <#ESCAPED_CHAR:
+      ("\\" ("\\"|"\""))
+  >
+|
 // multi-line = "text:" *(SP / HTAB) (hash-comment / CRLF)
 //               *(multi-line-literal / multi-line-dotstuff)
 //               "." CRLF

Modified: 
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/HeaderTest.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/test/java/org/apache/jsieve/HeaderTest.java?rev=1087252&r1=1087251&r2=1087252&view=diff
==============================================================================
--- james/jsieve/trunk/main/src/test/java/org/apache/jsieve/HeaderTest.java 
(original)
+++ james/jsieve/trunk/main/src/test/java/org/apache/jsieve/HeaderTest.java Thu 
Mar 31 11:07:54 2011
@@ -329,11 +329,11 @@ public class HeaderTest extends TestCase
      */
     public void testSpecialCharsEscapingInMatch() {
         boolean isTestPassed = false;
-        String script = "if header :matches \"X-Caffeine\" 
\"my,\\\\,?,\\?,\\\\?,*,\\*,\\\\*,pattern\" {throwTestException;}";
+        String script = "if header :matches \"X-Caffeine\" 
\"my,\\\\,?,\\\\?,*,\\\\*,pattern\" {throwTestException;}";
         try {
             SieveMailAdapter mail = (SieveMailAdapter) JUnitUtils.createMail();
             mail.getMessage().addHeader("X-Caffeine",
-                    "my,\\,x,x,?,foo,bar,*,pattern");
+                    "my,\\,x,?,foo,*,pattern");
             JUnitUtils.interpret(mail, script);
         } catch (MessagingException e) {
         } catch (ThrowTestException.TestException e) {
@@ -349,11 +349,11 @@ public class HeaderTest extends TestCase
      */
     public void testSpecialCharsEscapingInMatchFalse() {
         boolean isTestPassed = false;
-        String script = "if header :matches \"X-Caffeine\" 
\"my,?,\\?,\\\\?,*,\\*,\\\\*,pattern\" {throwTestException;}";
+        String script = "if header :matches \"X-Caffeine\" 
\"my,?,\\\\?,*,\\\\*,pattern\" {throwTestException;}";
         try {
             SieveMailAdapter mail = (SieveMailAdapter) JUnitUtils.createMail();
             mail.getMessage().addHeader("X-Caffeine",
-                    "my,x,x,q,foo,bar,*,pattern");
+                    "my,x,q,foo,*,pattern");
             JUnitUtils.interpret(mail, script);
             isTestPassed = true;
         } catch (MessagingException e) {

Modified: 
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
URL: 
http://svn.apache.org/viewvc/james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java?rev=1087252&r1=1087251&r2=1087252&view=diff
==============================================================================
--- 
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
 (original)
+++ 
james/jsieve/trunk/main/src/test/java/org/apache/jsieve/SieveParserVisitorImplQuoteTest.java
 Thu Mar 31 11:07:54 2011
@@ -100,7 +100,7 @@ public class SieveParserVisitorImplQuote
 
     public void testVisitASTstringObjectMultiSlashQuoted() throws Exception {
 
-        node = stringNode("\"v\\\\al\\\\u\\e\\\\\"");
+        node = stringNode("\"v\\\\al\\\\ue\\\\\"");
         visitor.visit(node, data);
         assertEquals("Data value added after quotes stripped", 1, data.size());
         assertEquals("Data value added after quotes stripped", "v\\al\\ue\\",



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to