Author: jochen
Date: Tue Apr 11 07:25:41 2006
New Revision: 393227

URL: http://svn.apache.org/viewcvs?rev=393227&view=rev
Log:
The Base64 encoder doesn't accept buffers of length 0. Such a buffer
was passed, if the byte array to encode has itself length 0.

Modified:
    
webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/serializer/ByteArraySerializer.java
    webservices/xmlrpc/trunk/src/changes/changes.xml

Modified: 
webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/serializer/ByteArraySerializer.java
URL: 
http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/serializer/ByteArraySerializer.java?rev=393227&r1=393226&r2=393227&view=diff
==============================================================================
--- 
webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/serializer/ByteArraySerializer.java
 (original)
+++ 
webservices/xmlrpc/trunk/common/src/main/java/org/apache/xmlrpc/serializer/ByteArraySerializer.java
 Tue Apr 11 07:25:41 2006
@@ -35,15 +35,17 @@
                pHandler.startElement("", VALUE_TAG, VALUE_TAG, 
ZERO_ATTRIBUTES);
                pHandler.startElement("", BASE_64_TAG, BASE_64_TAG, 
ZERO_ATTRIBUTES);
                byte[] buffer = (byte[]) pObject;
-               char[] charBuffer = new char[buffer.length >= 1024 ? 1024 : 
((buffer.length+3)/4)*4];
-               Encoder encoder = new Base64.SAXEncoder(charBuffer, 0, null, 
pHandler);
-               try {
-                       encoder.write(buffer, 0, buffer.length);
-                       encoder.flush();
-               } catch (Base64.SAXIOException e) {
-                       throw e.getSAXException();
-               } catch (IOException e) {
-                       throw new SAXException(e);
+               if (buffer.length > 0) {
+                       char[] charBuffer = new char[buffer.length >= 1024 ? 
1024 : ((buffer.length+3)/4)*4];
+                       Encoder encoder = new Base64.SAXEncoder(charBuffer, 0, 
null, pHandler);
+                       try {
+                               encoder.write(buffer, 0, buffer.length);
+                               encoder.flush();
+                       } catch (Base64.SAXIOException e) {
+                               throw e.getSAXException();
+                       } catch (IOException e) {
+                               throw new SAXException(e);
+                       }
                }
                pHandler.endElement("", BASE_64_TAG, BASE_64_TAG);
                pHandler.endElement("", VALUE_TAG, VALUE_TAG);

Modified: webservices/xmlrpc/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewcvs/webservices/xmlrpc/trunk/src/changes/changes.xml?rev=393227&r1=393226&r2=393227&view=diff
==============================================================================
--- webservices/xmlrpc/trunk/src/changes/changes.xml (original)
+++ webservices/xmlrpc/trunk/src/changes/changes.xml Tue Apr 11 07:25:41 2006
@@ -32,6 +32,11 @@
         The project is now splitted into three jar files:
         common, client, and server.
       </action>
+      <action dev="jochen" type="fix" due-to="Brad Karp"
+          due-to-email="[EMAIL PROTECTED]">
+        The Base64 encoder doesn't accept buffers of length 0. Such a buffer
+        was passed, if the byte array to encode has itself length 0.
+      </action>
     </release>
     <release version="3.0a1" date="17-Feb-2005">
       <action dev="jochen" type="enhancement">


Reply via email to