diff --git a/Source/kwsys/Base64.c b/Source/kwsys/Base64.c index 896042825..1111a5136 100644 --- a/Source/kwsys/Base64.c +++ b/Source/kwsys/Base64.c @@ -254,16 +254,27 @@ unsigned long kwsysBase64_Decode(const unsigned char *input, { unsigned char temp[3]; int len = kwsysBase64_Decode3(ptr, temp); - optr[0] = temp[0]; - optr[1] = temp[1]; - optr += (len > 2 ? 2 : len); + if(len >= 2) + { + optr[0] = temp[0]; + optr[1] = temp[1]; + optr += 2; + } + else if(len > 0) + { + optr[0] = temp[0]; + optr += 1; + } } else if (oend - optr == 1) { unsigned char temp[3]; int len = kwsysBase64_Decode3(ptr, temp); - optr[0] = temp[0]; - optr += (len > 2 ? 2 : len); + if(len > 0) + { + optr[0] = temp[0]; + optr += 1; + } } }