diff --git a/src/lib/eina/eina_str.c b/src/lib/eina/eina_str.c index a77d145996..4ff23e9c3a 100644 --- a/src/lib/eina/eina_str.c +++ b/src/lib/eina/eina_str.c @@ -729,15 +729,16 @@ eina_memdup(unsigned char *mem, size_t size, Eina_Bool terminate) } EAPI char * -eina_str_base64_encode(unsigned char const *src, unsigned int len) +eina_str_base64_encode(const unsigned char *src, unsigned int len) { + unsigned char inarr[3], outarr[4]; char *dest; int i = 0, j = 0, k = 0; - unsigned char inarr[3], outarr[4]; if (!src) return NULL; - dest = malloc(((len + 2) / 3) * 4); // Max length of encoded string. + // Max length of encoded string. + dest = malloc(sizeof (char) * (((len + 2) / 3) * 4 + 1)); if (!dest) return NULL; while (len--) @@ -774,5 +775,7 @@ eina_str_base64_encode(unsigned char const *src, unsigned int len) } + dest[k] = '\0'; + return dest; } diff --git a/src/lib/eina/eina_str.h b/src/lib/eina/eina_str.h index 6347dd9f8f..c47ddb464c 100644 --- a/src/lib/eina/eina_str.h +++ b/src/lib/eina/eina_str.h @@ -393,7 +393,7 @@ EAPI char *eina_strftime(const char *format, const struct tm *tm); * * @since 1.17.0 */ -EAPI char *eina_str_base64_encode(unsigned char const *src, unsigned int len); +EAPI char *eina_str_base64_encode(const unsigned char *src, unsigned int len); #include "eina_inline_str.x"