diff --git a/src/encode/base64.c b/src/encode/base64.c index 8c2217ae77925ec9513ecf4dc6def75ac6e96706..8b05bac1f516427333331dd8356f376ca8af6f0f 100644 --- a/src/encode/base64.c +++ b/src/encode/base64.c @@ -131,14 +131,16 @@ int b64_encode(char *target, size_t tlen, const char *source, size_t slen) { FREE_AND_NULL(tmpbuf); return(-1); } - if(inp==inend) - done=1; - if (!done) + if (inp>=inend) + enc=buf; + else enc=buf|((*inp & 0xF0) >> 4); if(add_char(outp++, enc, done, outend)) { FREE_AND_NULL(tmpbuf); return(-1); } + if(inp==inend) + done=1; if (!done) { buf=(*(inp++)<<2)&0x3C; if (inp == inend)