Author: sebb Date: Tue Mar 19 12:18:39 2013 New Revision: 1458240 URL: http://svn.apache.org/r1458240 Log: FILEUPLOAD-233 Base64Decoder doesn't correctly implement RFC 4648 Oops, initial rework of code was wrong. Re-enabled failing tests
Modified: commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java commons/proper/fileupload/trunk/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java Modified: commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java URL: http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java?rev=1458240&r1=1458239&r2=1458240&view=diff ============================================================================== --- commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java (original) +++ commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java Tue Mar 19 12:18:39 2013 @@ -162,12 +162,13 @@ final class Base64Decoder { if (p1 != PADDING) { // Nothing more to do if p1 == PADDING // CHECKSTYLE IGNORE MagicNumber FOR NEXT 1 LINE out.write((b2 << 4) | (b3 >> 2)); // 4 bits of b2 plus 4 bits of b3 - outLen++; - } else if (p2 != PADDING) { // Nothing more to do if p2 == PADDING - b4 = DECODING_TABLE[p2]; - // CHECKSTYLE IGNORE MagicNumber FOR NEXT 1 LINE - out.write((b3 << 6) | b4); // 2 bits of b3 plus 6 bits of b4 - outLen++; + outLen++; + if (p2 != PADDING) { // Nothing more to do if p2 == PADDING + b4 = DECODING_TABLE[p2]; + // CHECKSTYLE IGNORE MagicNumber FOR NEXT 1 LINE + out.write((b3 << 6) | b4); // 2 bits of b3 plus 6 bits of b4 + outLen++; + } } return outLen; Modified: commons/proper/fileupload/trunk/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java URL: http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java?rev=1458240&r1=1458239&r2=1458240&view=diff ============================================================================== --- commons/proper/fileupload/trunk/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java (original) +++ commons/proper/fileupload/trunk/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java Tue Mar 19 12:18:39 2013 @@ -48,10 +48,10 @@ public final class Base64DecoderTestCase assertEncoded("", ""); assertEncoded("f", "Zg=="); assertEncoded("fo", "Zm8="); - // assertEncoded("foo", "Zm9v"); + assertEncoded("foo", "Zm9v"); assertEncoded("foob", "Zm9vYg=="); assertEncoded("fooba", "Zm9vYmE="); - // assertEncoded("foobar", "Zm9vYmFy"); + assertEncoded("foobar", "Zm9vYmFy"); } private static void assertEncoded(String clearText, String encoded) throws Exception {