diff --git a/src/common/crypto.c b/src/common/crypto.c
index 2cb1c39eb926b241ad8861cb5ffd363f487a2d05..1b45639a7c0388dcb313d2413d2367e8113e5293 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 299373e2ec81ee57034cbe1e63e666b63f320ff7..7f4aa13ac2bc61d23470080aa4a9a107a46fa555 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;
 }