This is an automated email from the ASF dual-hosted git repository.
coheigea pushed a commit to branch 3.2.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git
The following commit(s) were added to refs/heads/3.2.x-fixes by this push:
new 73f22af CXF-7858 - Base64 empty string encoding issue
73f22af is described below
commit 73f22afb7ad627fbf323f93da495ea9cadc4c1c5
Author: Colm O hEigeartaigh <[email protected]>
AuthorDate: Tue Oct 2 10:35:35 2018 +0100
CXF-7858 - Base64 empty string encoding issue
(cherry picked from commit 0823ccebdceb596424f0d3f8203e7d6666efea70)
---
core/src/main/java/org/apache/cxf/common/util/Base64Utility.java | 4 ++++
.../test/java/org/apache/cxf/common/util/Base64UtilityTest.java | 8 ++++++++
2 files changed, 12 insertions(+)
diff --git a/core/src/main/java/org/apache/cxf/common/util/Base64Utility.java
b/core/src/main/java/org/apache/cxf/common/util/Base64Utility.java
index a3ae330..ed1a1cc 100644
--- a/core/src/main/java/org/apache/cxf/common/util/Base64Utility.java
+++ b/core/src/main/java/org/apache/cxf/common/util/Base64Utility.java
@@ -130,6 +130,10 @@ public final class Base64Utility {
int l)
throws Base64Exception {
+ if (id != null && id.length == 0 && l == 0) {
+ return new byte[0];
+ }
+
// Keep it simple - must be >= 4. Unpadded
// base64 data contain < 3 octets is invalid.
//
diff --git
a/core/src/test/java/org/apache/cxf/common/util/Base64UtilityTest.java
b/core/src/test/java/org/apache/cxf/common/util/Base64UtilityTest.java
index ff61b80..bec0dd3 100644
--- a/core/src/test/java/org/apache/cxf/common/util/Base64UtilityTest.java
+++ b/core/src/test/java/org/apache/cxf/common/util/Base64UtilityTest.java
@@ -179,6 +179,14 @@ public class Base64UtilityTest extends Assert {
assertEquals("Zm9vYg==", Base64Utility.encode("foob".getBytes()));
assertEquals("Zm9vYmE=", Base64Utility.encode("fooba".getBytes()));
assertEquals("Zm9vYmFy", Base64Utility.encode("foobar".getBytes()));
+
+ assertEquals("", new String(Base64Utility.decode("")));
+ assertEquals("f", new String(Base64Utility.decode("Zg==")));
+ assertEquals("fo", new String(Base64Utility.decode("Zm8=")));
+ assertEquals("foo", new String(Base64Utility.decode("Zm9v")));
+ assertEquals("foob", new String(Base64Utility.decode("Zm9vYg==")));
+ assertEquals("fooba", new String(Base64Utility.decode("Zm9vYmE=")));
+ assertEquals("foobar", new String(Base64Utility.decode("Zm9vYmFy")));
}
}