FILEUPLOAD-233 Base64Decoder doesn't correctly implement RFC 4648
Oops, initial rework of code was wrong.
Re-enabled failing tests
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/fileupload/trunk@1458240 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java b/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java
index 42264da..0f5369b 100644
--- a/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java
+++ b/src/main/java/org/apache/commons/fileupload/util/mime/Base64Decoder.java
@@ -162,12 +162,13 @@
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;
diff --git a/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java b/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java
index b6ef297..8ab0f8c 100644
--- a/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java
+++ b/src/test/java/org/apache/commons/fileupload/util/mime/Base64DecoderTestCase.java
@@ -48,10 +48,10 @@
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 {