From 33abddf90c9ae09fce93f74eddc8bf9fea16b2c6 Mon Sep 17 00:00:00 2001 From: Brad King Date: Thu, 30 Jun 2005 09:21:00 -0400 Subject: [PATCH] BUG: Do not increment optr by 2 after storing only one character. Also fixed possibility of storing uninitialized characters from the last triplet. --- Source/kwsys/Base64.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) 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; + } } }