eina: always terminate the string with a '\0'.
authorCedric BAIL <cedric@osg.samsung.com>
Mon, 23 Nov 2015 19:57:04 +0000 (11:57 -0800)
committerCedric BAIL <cedric@osg.samsung.com>
Mon, 23 Nov 2015 19:57:04 +0000 (11:57 -0800)
src/lib/eina/eina_str.c
src/lib/eina/eina_str.h

index a77d145..4ff23e9 100644 (file)
@@ -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;
 }
index 6347dd9..c47ddb4 100644 (file)
@@ -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"