----- Original Message -----
From: "Paul Brown" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Monday, March 11, 2002 2:00 AM
Subject: RE: Bas64 encoding performance
[snip]

> But I also I grabbed the wrong snippet of code; this was the one that I
> wanted:
>
> +      } else if (sixBit == 66) {
> +        throw new Error("bad character \'" + c + "\' in base64 value");
>
> This one should let the character go (p. 25):
>
>   if (sixBit == 66) byteShift--;

Paul,

    a better way to allow any character is just to remove the state 66. That
is to say change all the translateTable entries from \u0042 to \u0041 and to
change:

sixBit = (c < translateTable.length) ? translateTable[c] : 66;

to

sixBit = (c < translateTable.length) ? translateTable[c] : 65;

then the } else... can be removed.

However, I do not favour this change. I believe that the RFC allows a Base64
processor to reject messages containing non Table 1 characters and
whitespace. I believe that an XML-RPC Base64 processor should reject such
messages.

John Wilson
The Wilson Partnership
http://www.wilson.co.uk



Reply via email to