Author: niklas
Date: Mon Jul 21 02:23:31 2008
New Revision: 678373

URL: http://svn.apache.org/viewvc?rev=678373&view=rev
Log:
Fix for MIME4J-61: Large inputs will not cause ArrayIndexOutOfBoundsException 
anymore when encoded using quoted printable.

Modified:
    james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java
    
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java

Modified: 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java?rev=678373&r1=678372&r2=678373&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java 
(original)
+++ 
james/mime4j/trunk/src/main/java/org/apache/james/mime4j/util/CodecUtil.java 
Mon Jul 21 02:23:31 2008
@@ -146,11 +146,9 @@
         }
         
         private void write(byte next) throws IOException {
-            outBuffer[outputIndex] = next;
+            outBuffer[outputIndex++] = next;
             if (outputIndex >= outBuffer.length) {
                 flushOutput();
-            } else {
-                outputIndex++;
             }
         }
         

Modified: 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java
URL: 
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java?rev=678373&r1=678372&r2=678373&view=diff
==============================================================================
--- 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java
 (original)
+++ 
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/util/CodecUtilTest.java
 Mon Jul 21 02:23:31 2008
@@ -21,6 +21,7 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.io.InputStream;
 
 import org.apache.james.mime4j.ExampleMail;
 
@@ -44,6 +45,20 @@
         assertEquals(content, out.toByteArray());
     }
     
+    public void testEncodeQuotedPrintableLargeInput() throws Exception {
+        StringBuffer sb = new StringBuffer();
+        for (int i = 0; i < 1024 * 5; i++) {
+            sb.append((char) ('0' + (i % 10)));
+        }
+        String expected = sb.toString().replaceAll("(\\d{75})", "$1=\r\n");
+        
+        InputStream in = new 
ByteArrayInputStream(sb.toString().getBytes("US-ASCII"));
+        ByteArrayOutputStream out = new ByteArrayOutputStream();
+        CodecUtil.encodeQuotedPrintableBinary(in, out);
+        String actual = new String(out.toByteArray(), "US-ASCII");
+        assertEquals(expected, actual);
+    }
+    
     private void assertEquals(byte[] expected, byte[] actual) {
         StringBuffer buffer = new StringBuffer(expected.length);
         assertEquals(expected.length, actual.length);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to