From: Andre Noll Date: Tue, 28 Apr 2015 16:17:42 +0000 (+0200) Subject: base64: Remove unnecessary overflow checks. X-Git-Tag: v0.5.7~20^2~4 X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=commitdiff_plain;h=673f8dbef56bbe6a09870bdef65966db3f6793a2 base64: Remove unnecessary overflow checks. Since we decode no more than encoded_size many bytes, and the output buffer is allocated large enough to store the decoded data, we won't ever overflow the output buffer. This commit removes the pointless checks. --- diff --git a/base64.c b/base64.c index 4809a2f2..382f1519 100644 --- a/base64.c +++ b/base64.c @@ -46,12 +46,10 @@ int base64_decode(char const *src, size_t encoded_size, char **result, char *pos; const char *end = src + encoded_size; unsigned char *target; - size_t targsize; if (encoded_size == (size_t)-1) encoded_size = strlen(src); - targsize = BASE64_MAX_DECODED_SIZE(encoded_size); - target = para_malloc(targsize + 1); + target = para_malloc(BASE64_MAX_DECODED_SIZE(encoded_size) + 1); state = 0; tarindex = 0; @@ -70,30 +68,22 @@ int base64_decode(char const *src, size_t encoded_size, char **result, switch (state) { case 0: - if (tarindex >= targsize) - goto fail; target[tarindex] = (pos - Base64) << 2; state = 1; break; case 1: - if (tarindex + 1 >= targsize) - goto fail; target[tarindex] |= (pos - Base64) >> 4; target[tarindex + 1] = ((pos - Base64) & 0x0f) << 4; tarindex++; state = 2; break; case 2: - if (tarindex + 1 >= targsize) - goto fail; target[tarindex] |= (pos - Base64) >> 2; target[tarindex + 1] = ((pos - Base64) & 0x03) << 6; tarindex++; state = 3; break; case 3: - if (tarindex >= targsize) - goto fail; target[tarindex] |= pos - Base64; tarindex++; state = 0;