X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=base64.c;h=1453257b501ac87d79d0a2ffa7d5baa77a7d9998;hb=da989f7b8294e342572ec5f27f1a6f3f2b1fe56f;hp=a8c7f1c156182f6dfde33a93f0d059bf8ed4ff7e;hpb=22443c2f05880838db8d7091701f8f20a83cc90e;p=~andy%2Ffetchmail diff --git a/base64.c b/base64.c index a8c7f1c1..1453257b 100644 --- a/base64.c +++ b/base64.c @@ -8,6 +8,7 @@ * scheme used here. */ #include "config.h" +#include "fetchmail.h" #include static const char base64digits[] = @@ -24,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]; @@ -52,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;