--- old/src/share/classes/com/sun/jndi/ldap/Obj.java 2014-03-20 15:40:44.000000000 -0700 +++ new/src/share/classes/com/sun/jndi/ldap/Obj.java 2014-03-20 15:40:44.000000000 -0700 @@ -38,13 +38,11 @@ import java.io.ObjectStreamClass; import java.io.InputStream; +import java.util.Base64; import java.util.Hashtable; import java.util.Vector; import java.util.StringTokenizer; -import sun.misc.BASE64Encoder; -import sun.misc.BASE64Decoder; - import java.lang.reflect.Proxy; import java.lang.reflect.Modifier; @@ -324,7 +322,7 @@ Attribute refAttr = new BasicAttribute(JAVA_ATTRIBUTES[REF_ADDR]); RefAddr refAddr; - BASE64Encoder encoder = null; + Base64.Encoder encoder = null; for (int i = 0; i < count; i++) { refAddr = ref.get(i); @@ -335,12 +333,15 @@ separator + refAddr.getContent()); } else { if (encoder == null) - encoder = new BASE64Encoder(); + encoder = Base64.getMimeEncoder(); + // Base64.Encoder.encode method is used instead of + // encodeToString method to ensure Java object in LDAP + // is encoded with the same scheme as previous releases. refAttr.add(""+ separator + i + separator + refAddr.getType() + separator + separator + - encoder.encodeBuffer(serializeObject(refAddr))); + new String(encoder.encode(serializeObject(refAddr)))); } } attrs.put(refAttr); @@ -403,7 +404,7 @@ String val, posnStr, type; char separator; int start, sep, posn; - BASE64Decoder decoder = null; + Base64.Decoder decoder = null; ClassLoader cl = helper.getURLClassLoader(codebases); @@ -472,11 +473,13 @@ // %%% RL: exception if empty after double separator if (decoder == null) - decoder = new BASE64Decoder(); + decoder = Base64.getMimeDecoder(); + // Java object in LDAP was encoded with the platform + // default charset. RefAddr ra = (RefAddr) deserializeObject( - decoder.decodeBuffer(val.substring(start)), + decoder.decode(val.substring(start).getBytes()), cl); refAddrList.setElementAt(ra, posn);