[ http://issues.apache.org/jira/browse/XERCESJ-1222?page=all ]
Venkat Ganesh updated XERCESJ-1222:
-----------------------------------
Attachment: Base64EncodeDecode2.java
Micheal,
Thanks for pointing out the conversion between byte to char is not ok. With the
modified program, Base64EncodeDecode2.java, I am able to successfully encode
and decode .exe files on Windows.
Thanks a lot.
> Base64 encode/decode bug using xerces-2_9_0 while processing binary files.
> --------------------------------------------------------------------------
>
> Key: XERCESJ-1222
> URL: http://issues.apache.org/jira/browse/XERCESJ-1222
> Project: Xerces2-J
> Issue Type: Bug
> Affects Versions: 2.9.0
> Environment: Microsoft Windows XP [Version 5.1.2600]
> Reporter: Venkat Ganesh
> Attachments: Base64EncodeDecode.java, Base64EncodeDecode2.java
>
>
> Hi,
> The program Base64EncodeDecode.java shown below, is using
> org.apache.xerces.impl.dv.util.Base64 class for base64 encode/decode. It
> works well with ASCII files. However, it fails with binary files.
> Thanks.
> Testing.
> ======
> Make sure xerces jar files are in the classpath.
> Testing with ASCII files.
> ==================
> Encode a text file as shown below:
> java Base64EncodeDecode encode foo.xml foo_encoded.xml
> Decode the encoded file as shown below:
> java Base64EncodeDecode decode foo_encoded.xml foo_decoded.xml
> Verified foo.xml and foo_decoded.xml are identical, as expected.
> Testing with binary files.
> ==================
> Encode a binary file as shown below:
> java Base64EncodeDecode encode procexp.exe procexp_encoded.exe
> Decode the encoded file as shown below:
> java Base64EncodeDecode decode procexp_encoded.exe procexp_decoded.exe
> Verify you cannot double click and open the decoded exe file. You will see
> the error message that the decoded exe file is not a valid Win32 application
> even though the original executable (procexp.exe) is a valid executable. The
> number of bytes and size of the original and decoded executables are same;
> however, the third byte in procexp.exe is ox90 while it is 0x3f in the
> procexp_decoded.exe, when viewed using a hex editor. There are many more
> differences.
> I am able to reproduce this issue with xerces-2_9_0 as well as xerces-2_7_1
> jar files. Is this a known bug?
> How to encode/decode binary files using xerces jar files?
> Thanks and regards,
> V.Ganesh
> [EMAIL PROTECTED]
> Base64EncodeDecode.java
> ======================
> import java.io.FileInputStream;
> import java.io.FileOutputStream;
> import java.io.IOException;
> import org.apache.xerces.impl.dv.util.Base64;
> public class Base64EncodeDecode {
> public static void main(String[] args) throws IOException {
> if ( args.length != 3 )
> {
> System.out.println("Usage java Base64EncodeDecode encode|decode
> <input-file-name> <output-file-name>");
> System.out.println("You can use this program to encode binary
> files also.");
> return;
> }
> StringBuffer sb=new StringBuffer(10000);
> FileInputStream inFile = null;
> FileOutputStream outFile = null;
> try {
> inFile = new FileInputStream(args[1]);
> outFile = new FileOutputStream(args[2]);
> int byteRead=0;
> int ctr=0;
> int numberOfChars=0;
> while ((byteRead = inFile.read()) != -1) {
> sb.append((char ) byteRead);
> numberOfChars++;
> }
> if ( args[0].equalsIgnoreCase("encode") == true )
> {
> String tmpString=sb.toString();
> String outString=Base64.encode(tmpString.getBytes());
> if ( outString == null )
> {
> System.out.println("Failed- Not able to encode. ");
> } else {
> outFile.write(outString.getBytes());
> }
> } else {
> String tmpString=sb.toString();
> byte outByteArray[] =Base64.decode(tmpString);
> if ( outByteArray == null )
> {
> System.out.println("Failed- Not able to decode. ");
> } else {
> outFile.write(outByteArray);
> }
> }
> } finally {
> if (inFile != null) {
> inFile.close();
> }
> if (outFile != null) {
> outFile.close();
> }
> }
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]