+2005-04-23 Hrvoje Niksic <hniksic@xemacs.org>
+
+ * utils.c (base64_encode): Treat input as unsigned chars.
+ Required for correct encoding of binary stuff.
+
2005-04-23 Hrvoje Niksic <hniksic@xemacs.org>
* http-ntlm.c: Format the function definitions in an
#endif /* not WINDOWS */
-/* Encode the string S of length LENGTH to base64 format and place it
+/* Encode the string STR of length LENGTH to base64 format and place it
to B64STORE. The output will be \0-terminated, and must point to a
writable buffer of at least 1+BASE64_LENGTH(length) bytes. It
returns the length of the resulting base64 data, not counting the
base64 data. */
int
-base64_encode (const char *s, int length, char *b64store)
+base64_encode (const char *str, int length, char *b64store)
{
/* Conversion table. */
static char tbl[64] = {
'4','5','6','7','8','9','+','/'
};
int i;
- unsigned char *p = (unsigned char *) b64store;
+ const unsigned char *s = (const unsigned char *) str;
+ char *p = b64store;
/* Transform the 3x8 bits to 4x6 bits, as required by base64. */
for (i = 0; i < length; i += 3)
/* ...and zero-terminate it. */
*p = '\0';
- return p - (unsigned char *) b64store;
+ return p - b64store;
}
#define IS_ASCII(c) (((c) & 0x80) == 0)