From e900d8e80c098c309df50712525a486e95008f53 Mon Sep 17 00:00:00 2001 From: Philipp Schafft Date: Fri, 27 Jul 2018 09:56:35 +0000 Subject: [PATCH] Fix: Fixed end-of-input bug in Base64 encoder --- src/util.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/util.c b/src/util.c index 68f402ae..7d61bed7 100644 --- a/src/util.c +++ b/src/util.c @@ -421,18 +421,20 @@ char *util_base64_encode(const char *data, size_t len) { while(len > 0) { chunk = (len > 3) ? 3 : len; *out++ = base64table[(*data & 0xFC)>>2]; - *out++ = base64table[((*data & 0x03)<<4) | ((*(data+1) & 0xF0) >> 4)]; switch(chunk) { case 3: + *out++ = base64table[((*data & 0x03)<<4) | ((*(data+1) & 0xF0) >> 4)]; *out++ = base64table[((*(data+1) & 0x0F)<<2) | ((*(data+2) & 0xC0)>>6)]; *out++ = base64table[(*(data+2)) & 0x3F]; break; case 2: + *out++ = base64table[((*data & 0x03)<<4) | ((*(data+1) & 0xF0) >> 4)]; *out++ = base64table[((*(data+1) & 0x0F)<<2)]; *out++ = '='; break; case 1: + *out++ = base64table[((*data & 0x03)<<4)]; *out++ = '='; *out++ = '='; break;