X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=base64.c;h=0b7200923def5faad89650af0220751100c157f0;hp=69ae3a73cc7d768ace1d36ea0030e16f4c940b5d;hb=a8aba140a61d5b86093cea46afcb613092d4978d;hpb=b17296ba049d71986028ac83f0b415a021d0691c diff --git a/base64.c b/base64.c index 69ae3a7..0b72009 100644 --- a/base64.c +++ b/base64.c @@ -43,20 +43,19 @@ # include "config.h" #endif -#include "mutt.h" -#include "mime.h" +#include -#define BAD -1 +#include "mutt.h" /* raw bytes to null-terminated base 64 string */ void mutt_to_base64 (unsigned char *out, const unsigned char *in, size_t len, size_t olen) { while (len >= 3 && olen > 10) { - *out++ = B64Chars[in[0] >> 2]; - *out++ = B64Chars[((in[0] << 4) & 0x30) | (in[1] >> 4)]; - *out++ = B64Chars[((in[1] << 2) & 0x3c) | (in[2] >> 6)]; - *out++ = B64Chars[in[2] & 0x3f]; + *out++ = __m_b64chars[in[0] >> 2]; + *out++ = __m_b64chars[((in[0] << 4) & 0x30) | (in[1] >> 4)]; + *out++ = __m_b64chars[((in[1] << 2) & 0x3c) | (in[2] >> 6)]; + *out++ = __m_b64chars[in[2] & 0x3f]; olen -= 4; len -= 3; in += 3; @@ -66,12 +65,12 @@ void mutt_to_base64 (unsigned char *out, const unsigned char *in, size_t len, if (len > 0 && olen > 4) { unsigned char fragment; - *out++ = B64Chars[in[0] >> 2]; + *out++ = __m_b64chars[in[0] >> 2]; fragment = (in[0] << 4) & 0x30; if (len > 1) fragment |= in[1] >> 4; - *out++ = B64Chars[fragment]; - *out++ = (len < 2) ? '=' : B64Chars[(in[1] << 2) & 0x3c]; + *out++ = __m_b64chars[fragment]; + *out++ = (len < 2) ? '=' : __m_b64chars[(in[1] << 2) & 0x3c]; *out++ = '='; } *out = '\0'; @@ -86,32 +85,31 @@ int mutt_from_base64 (char *out, const char *in) do { digit1 = in[0]; - if (digit1 > 127 || base64val (digit1) == BAD) + if (base64val(digit1) < 0) return -1; digit2 = in[1]; - if (digit2 > 127 || base64val (digit2) == BAD) + if (base64val(digit2) < 0) return -1; digit3 = in[2]; - if (digit3 > 127 || ((digit3 != '=') && (base64val (digit3) == BAD))) + if (digit3 != '=' && base64val(digit3) < 0) return -1; digit4 = in[3]; - if (digit4 > 127 || ((digit4 != '=') && (base64val (digit4) == BAD))) + if (digit4 != '=' && base64val(digit4) < 0) return -1; in += 4; /* digits are already sanity-checked */ - *out++ = (base64val (digit1) << 2) | (base64val (digit2) >> 4); + *out++ = (base64val(digit1) << 2) | (base64val(digit2) >> 4); len++; if (digit3 != '=') { - *out++ = ((base64val (digit2) << 4) & 0xf0) | (base64val (digit3) >> 2); + *out++ = ((base64val(digit2) << 4) & 0xf0) | (base64val(digit3) >> 2); len++; if (digit4 != '=') { - *out++ = ((base64val (digit3) << 6) & 0xc0) | base64val (digit4); + *out++ = ((base64val(digit3) << 6) & 0xc0) | base64val(digit4); len++; } } - } - while (*in && digit4 != '='); + } while (*in && digit4 != '='); return len; }