X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=base64.c;h=1453257b501ac87d79d0a2ffa7d5baa77a7d9998;hb=33cddbff323efcbae1503e91e6e65b2733da80c7;hp=03c6db44dde353c8baeefb7c776acf422ad723ce;hpb=3c25e877da7ba4a11e0c9bd5f65f8857cb8f272b;p=~andy%2Ffetchmail diff --git a/base64.c b/base64.c index 03c6db44..1453257b 100644 --- a/base64.c +++ b/base64.c @@ -25,11 +25,13 @@ static const char base64val[] = { BAD, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,BAD, BAD,BAD,BAD,BAD }; -#define DECODE64(c) (isascii(c) ? base64val[c] : BAD) +#define DECODE64(c) (isascii((unsigned char)(c)) ? base64val[c] : BAD) -void to64frombits(unsigned char *out, const unsigned char *in, int inlen) +void to64frombits(char *out, const void *in_, int inlen) /* raw bytes in quasi-big-endian order to base 64 string (NUL-terminated) */ { + const unsigned char *in = (const unsigned char *)in_; + for (; inlen >= 3; inlen -= 3) { *out++ = base64digits[in[0] >> 2]; @@ -53,12 +55,13 @@ void to64frombits(unsigned char *out, const unsigned char *in, int inlen) *out = '\0'; } -int from64tobits(char *out, const char *in, int maxlen) +int from64tobits(void *out_, const char *in, int maxlen) /* base 64 to raw bytes in quasi-big-endian order, returning count of bytes */ /* maxlen limits output buffer size, set to zero to ignore */ { int len = 0; register unsigned char digit1, digit2, digit3, digit4; + unsigned char *out = (unsigned char *)out_; if (in[0] == '+' && in[1] == ' ') in += 2;