Multi-part boundary calculation is using the wrong character set.
-----------------------------------------------------------------
Key: WSCOMMONS-168
URL: https://issues.apache.org/jira/browse/WSCOMMONS-168
Project: WS-Commons
Issue Type: Bug
Components: AXIOM
Reporter: Rich Scheuerle
Assigned To: Rich Scheuerle
MIMEOutputUtils uses the following code to write out the boundary
/**
* @throws IOException
* This will write the boundary to output Stream
*/
public static void writeMimeBoundary(OutputStream outStream,
String boundary) throws IOException {
outStream.write(new byte[]{45, 45});
outStream.write(boundary.getBytes());
}
Note that 45 is the UTF-8 character for "-". However the boundary bytes are
obtained using the default charset. This code fails on an EBCDIC based machine.
The tactical solution is to change the code to make it consistent (see full
solution at the end of this remark):
outStream.write(new byte[]{45, 45});
outStream.write(boundary.getBytes("UTF-8")); <---------------
A similar change is needed in Attachments.java where the boundary is read:
Currently:
// Boundary always have the prefix "--".
this.boundary = ("--" + contentType.getParameter("boundary"))
.getBytes();
Proposed:
// Boundary always have the prefix "--".
this.boundary = ("--" + contentType.getParameter("boundary"))
.getBytes("UTF-8"); <-----------------------
----------------------------------------------------------------------
The full solution is to change the code to respect the charset of the message.
However, I believe that this will cause problems in the lower level boundary
delimitted stream code and other lower level classes.
I believe the lower level classes have hard-code checks for UTF-8 characters
and assume 1-byte character lengths.
This jira covers the tactical solution. I will open a separate jira to address
the full solution.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]