From 4d06b900cd27ba1bf01c3734d8e89cc599337564 Mon Sep 17 00:00:00 2001 Message-Id: <4d06b900cd27ba1bf01c3734d8e89cc599337564.1717596162.git.mdw@distorted.org.uk> From: Mark Wooding Date: Mon, 31 Dec 2007 13:46:41 +0000 Subject: [PATCH] correct base64 changes Organization: Straylight/Edgeware From: rjk@greenend.org.uk <> --- lib/base64.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/base64.c b/lib/base64.c index 7ba4730..d794182 100644 --- a/lib/base64.c +++ b/lib/base64.c @@ -65,7 +65,14 @@ char *generic_base64(const char *s, size_t *nsp, const char *table) { dynstr_init(&d); n = 0; while((c = (unsigned char)*s++)) { - if((t = strchr(table, c))) { + if(c == table[64]) { + if(n >= 2) { + dynstr_append(&d, (b[0] << 2) + (b[1] >> 4)); + if(n == 3) + dynstr_append(&d, (b[1] << 4) + (b[2] >> 2)); + } + break; + } else if((t = strchr(table, c))) { b[n++] = t - table; if(n == 4) { dynstr_append(&d, (b[0] << 2) + (b[1] >> 4)); @@ -73,13 +80,6 @@ char *generic_base64(const char *s, size_t *nsp, const char *table) { dynstr_append(&d, (b[2] << 6) + b[3]); n = 0; } - } else if(c == table[64]) { - if(n >= 2) { - dynstr_append(&d, (b[0] << 2) + (b[1] >> 4)); - if(n == 3) - dynstr_append(&d, (b[1] << 4) + (b[2] >> 2)); - } - break; } } if(nsp) -- [mdw]