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: [email protected]
For additional commands, e-mail: [email protected]