Hey Dustin.  Is this be related to issue 9931, "Base64 decoder chokes
on a whitespace?"

http://issues.apache.org/bugzilla/show_bug.cgi?id=9931


Dustin Sallings <[EMAIL PROTECTED]> writes:

>       Hi, I'm using the Apache XML-RPC code in a project and I had some
> bad interoperability problems when using a non-Apache client.
>
>       Specifically, when I used the python client to send a binary of
> about 700k, it gained about 10k in the decoding.  This seems to be because
> the decoder does not do anything to skip input characters that are not
> valid input characters.  In particular, section 6.8 of RFC 2045 states the
> following:
>
>       The encoded output stream must be represented in lines of no more
>    than 76 characters each.  All line breaks or other characters not
>    found in Table 1 must be ignored by decoding software.  In base64
>    data, characters other than those in Table 1, line breaks, and other
>    white space probably indicate a transmission error, about which a
>    warning message or even a message rejection might be appropriate
>    under some circumstances.
>
>       The python encoder was indeed sending 76 character lines, which
> seemed to be the problem.
>
>       Not wanting to spend a lot of time getting this thing going, I
> replaced the base64 decoder with one that I had written and have done
> interop testing with.  The patch is included, and you guys are free to do
> what you want with it.
>
>       Like the original decoder, it does not throw an exception on
> invalid input, it instead tried to decode as best as it can.  It may be
> more appropriate here to throw an exception if the invalid character is
> not a whitespace, i.e. change this:
>
>             // Skip over invalid characters.
>             if(x<0) {
>                 invalid++;
>                 continue;
>             }
>
>       to
>
>         // Skip over invalid characters.
>         if(x<0) {
>           if(!Character.isWhitespace(input.charAt(i))) {
>                 throw new IOException("Invalid Base64 character found");
>             }
>             // Otherwise, mark it and continue
>             invalid++;
>             continue;
>         }
>
>       Anyway, you guys are free to do with this code as you please, but
> I'm using it in the meantime to make my app work.
>
> --
> SPY                      My girlfriend asked me which one I like better.
> pub  1024/3CAE01D5 1994/11/03 Dustin Sallings <[EMAIL PROTECTED]>
> |    Key fingerprint =  87 02 57 08 02 D0 DA D6  C8 0F 3E 65 51 98 D8 BE
> L_______________________ I hope the answer won't upset her. ____________

Reply via email to