From a708865f7daa71ad23d78bd335e1e1df5ae47cd1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Wilfried=20G=C3=B6esgens?= Date: Tue, 23 Mar 2010 21:05:20 +0000 Subject: [PATCH] * qp_encode_email_addrs(): don't use static buffers for recipient parts; alloc the size of the total buffer here, so it fits in any case. --- citadel/msgbase.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/citadel/msgbase.c b/citadel/msgbase.c index 1b99b9216..1657661bf 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -1573,7 +1573,7 @@ int CtdlOutputMsg(long msg_num, /* message number (local) to fetch */ char *qp_encode_email_addrs(char *source) { - char user[256], node[256], name[256]; + char *user, *node, *name; const char headerStr[] = "=?UTF-8?Q?"; char *Encoded; char *EncodedName; @@ -1638,6 +1638,10 @@ char *qp_encode_email_addrs(char *source) for (i = 0; i < nColons; i++) source[AddrPtr[i]++] = '\0'; + /* TODO: if libidn, this might get larger*/ + user = malloc(SourceLen + 1); + node = malloc(SourceLen + 1); + name = malloc(SourceLen + 1); nPtr = Encoded; *nPtr = '\0'; @@ -1681,6 +1685,10 @@ char *qp_encode_email_addrs(char *source) } for (i = 0; i < nColons; i++) source[--AddrPtr[i]] = ','; + + free(user); + free(node); + free(name); free(AddrUtf8); free(AddrPtr); return Encoded; -- 2.39.2