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">