From ecf3a6ab003303f1c453e6ff76a02aeebe53dd3d Mon Sep 17 00:00:00 2001 From: Alban Browaeys Date: Tue, 13 Nov 2012 18:49:17 +0100 Subject: [PATCH] Fix allocation of the string passed to g_base64_encode_step. As per g_base64 documentation the minimum size is : avatar->len / 3 + 1) *4 + 4) and if line breaks are enabled: + ((avatar->len / 3 + 1) * 4 + 4) / 72 + 1 --- src/conn-avatars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/conn-avatars.c b/src/conn-avatars.c index 31d3efc..34ca5f8 100644 --- a/src/conn-avatars.c +++ b/src/conn-avatars.c @@ -840,7 +840,7 @@ gabble_connection_set_avatar (TpSvcConnectionInterfaceAvatars *iface, gint state = 0, save = 0, outlen; ctx->avatar = g_string_new_len (avatar->data, avatar->len); - base64 = g_malloc ((avatar->len / 3 + 1) * 4 + 1); + base64 = g_malloc (((avatar->len / 3 + 1) *4 + 4) + ((avatar->len / 3 + 1) * 4 + 4) / 72 + 1); outlen = g_base64_encode_step ((const guchar *) avatar->data, avatar->len, TRUE, base64, &state, &save); outlen += g_base64_encode_close (TRUE, base64 + outlen, &state, &save); -- 1.8.0