Author: bago
Date: Sun May 31 12:22:44 2009
New Revision: 780418

URL: http://svn.apache.org/viewvc?rev=780418&view=rev
Log:
Also add escaping for backslash in regex replace strings (JSPF-71)
>From javadocs, both dollar and backslash need escaping.
(also replaced tabs with spaces for our formatting convention).

Modified:
    
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
    
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/core/MacroExpandTest.java

Modified: 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java?rev=780418&r1=780417&r2=780418&view=diff
==============================================================================
--- 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
 (original)
+++ 
james/jspf/trunk/resolver/src/main/java/org/apache/james/jspf/core/MacroExpand.java
 Sun May 31 12:22:44 2009
@@ -573,16 +573,16 @@
      * @return escaped string
      */
     private String escapeForMatcher(String raw) {
-       StringBuffer sb= new StringBuffer();
-       
-       for (int i = 0; i < raw.length(); i++) {
-               char c = raw.charAt(i);
-               if (c == '$') {
-                       sb.append('\\');
-               }
-               sb.append(c);
-       }
-       return sb.toString();
+        StringBuffer sb = new StringBuffer();
+
+        for (int i = 0; i < raw.length(); i++) {
+            char c = raw.charAt(i);
+            if (c == '$' || c == '\\') {
+                sb.append('\\');
+            }
+            sb.append(c);
+        }
+        return sb.toString();
     }
 
 }
\ No newline at end of file

Modified: 
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/core/MacroExpandTest.java
URL: 
http://svn.apache.org/viewvc/james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/core/MacroExpandTest.java?rev=780418&r1=780417&r2=780418&view=diff
==============================================================================
--- 
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/core/MacroExpandTest.java
 (original)
+++ 
james/jspf/trunk/resolver/src/test/java/org/apache/james/jspf/core/MacroExpandTest.java
 Sun May 31 12:22:44 2009
@@ -188,16 +188,33 @@
     }
     
     public void testLocalPartWithSpecialChars() throws PermErrorException {
-       
-       
-       
assertEquals("+exists:cl.192.0.2.3.fr.test{[email protected]",defIp4me.expand("+exists:CL.%{i}.FR.%{s}.spf.test.com",
 new rfcIP4MacroData() {
-               public String getMailFrom() {
-                       return "test{[email protected]";
-               }
-                  public String getCurrentSenderPart() {
-                   return "test{$LNAME}";
-               }
-       }, MacroExpand.DOMAIN));
+
+        assertEquals(
+                
"+exists:cl.192.0.2.3.fr.test{[email protected]",
+                defIp4me.expand("+exists:CL.%{i}.FR.%{s}.spf.test.com",
+                        new rfcIP4MacroData() {
+                            public String getMailFrom() {
+                                return "test{[email protected]";
+                            }
+
+                            public String getCurrentSenderPart() {
+                                return "test{$LNAME}";
+                            }
+                        }, MacroExpand.DOMAIN));
+
+        // not sure if \ is allowed in email, but anyway make sure we 
correctly handle also backslash.
+        assertEquals(
+                
"+exists:cl.192.0.2.3.fr.tes\\t{[email protected]",
+                defIp4me.expand("+exists:CL.%{i}.FR.%{s}.spf.test.com",
+                        new rfcIP4MacroData() {
+                            public String getMailFrom() {
+                                return "tes\\t{[email protected]";
+                            }
+
+                            public String getCurrentSenderPart() {
+                                return "tes\\t{$LNAME}";
+                            }
+                        }, MacroExpand.DOMAIN));
     }
 
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to