Merge remote-tracking branch 'origin/maint-0.2.5'

This commit is contained in:
Nick Mathewson 2014-12-22 16:02:47 -05:00
commit 0965bbd5ac
2 changed files with 9 additions and 0 deletions

View File

@ -2752,6 +2752,8 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
if (destlen > SIZE_T_CEILING) if (destlen > SIZE_T_CEILING)
return -1; return -1;
memset(dest, 0, destlen);
EVP_DecodeInit(&ctx); EVP_DecodeInit(&ctx);
EVP_DecodeUpdate(&ctx, (unsigned char*)dest, &len, EVP_DecodeUpdate(&ctx, (unsigned char*)dest, &len,
(unsigned char*)src, srclen); (unsigned char*)src, srclen);
@ -2773,6 +2775,8 @@ base64_decode(char *dest, size_t destlen, const char *src, size_t srclen)
if (destlen > SIZE_T_CEILING) if (destlen > SIZE_T_CEILING)
return -1; return -1;
memset(dest, 0, destlen);
/* Iterate over all the bytes in src. Each one will add 0 or 6 bits to the /* Iterate over all the bytes in src. Each one will add 0 or 6 bits to the
* value we're decoding. Accumulate bits in <b>n</b>, and whenever we have * value we're decoding. Accumulate bits in <b>n</b>, and whenever we have
* 24 bits, batch them into 3 bytes and flush those bytes to dest. * 24 bits, batch them into 3 bytes and flush those bytes to dest.
@ -2952,6 +2956,8 @@ base32_decode(char *dest, size_t destlen, const char *src, size_t srclen)
tor_assert((nbits/8) <= destlen); /* We need enough space. */ tor_assert((nbits/8) <= destlen); /* We need enough space. */
tor_assert(destlen < SIZE_T_CEILING); tor_assert(destlen < SIZE_T_CEILING);
memset(dest, 0, destlen);
/* Convert base32 encoded chars to the 5-bit values that they represent. */ /* Convert base32 encoded chars to the 5-bit values that they represent. */
tmp = tor_malloc_zero(srclen); tmp = tor_malloc_zero(srclen);
for (j = 0; j < srclen; ++j) { for (j = 0; j < srclen; ++j) {

View File

@ -1268,6 +1268,9 @@ base16_decode(char *dest, size_t destlen, const char *src, size_t srclen)
return -1; return -1;
if (destlen < srclen/2 || destlen > SIZE_T_CEILING) if (destlen < srclen/2 || destlen > SIZE_T_CEILING)
return -1; return -1;
memset(dest, 0, destlen);
end = src+srclen; end = src+srclen;
while (src<end) { while (src<end) {
v1 = hex_decode_digit_(*src); v1 = hex_decode_digit_(*src);