diff --git a/src/common/crypto.c b/src/common/crypto.c index 2cb1c39eb9..1b45639a7c 100644 --- a/src/common/crypto.c +++ b/src/common/crypto.c @@ -2496,6 +2496,8 @@ base64_encode(char *dest, size_t destlen, const char *src, size_t srclen, return -1; if (destlen > SIZE_T_CEILING) return -1; + if (enclen > INT_MAX) + return -1; memset(dest, 0, enclen); @@ -2576,7 +2578,7 @@ base64_encode(char *dest, size_t destlen, const char *src, size_t srclen, *d++ = '\0'; /* NUL terminate the output. */ - return enclen; + return (int) enclen; } #undef BASE64_OPENSSL_LINELEN diff --git a/src/test/test_crypto.c b/src/test/test_crypto.c index 299373e2ec..7f4aa13ac2 100644 --- a/src/test/test_crypto.c +++ b/src/test/test_crypto.c @@ -614,7 +614,7 @@ base64_encode_evp(char *dest, char *src, size_t srclen) int len, ret; EVP_EncodeInit(&ctx); - EVP_EncodeUpdate(&ctx, (unsigned char *)dest, &len, s, srclen); + EVP_EncodeUpdate(&ctx, (unsigned char *)dest, &len, s, (int)srclen); EVP_EncodeFinal(&ctx, (unsigned char *)(dest + len), &ret); return ret+ len; }