From 673f8dbef56bbe6a09870bdef65966db3f6793a2 Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Tue, 28 Apr 2015 18:17:42 +0200 Subject: [PATCH] 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. --- base64.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) 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; -- 2.39.2