* qp_encode_email_addrs(): don't use static buffers for recipient parts; alloc...
authorWilfried Göesgens <willi@citadel.org>
Tue, 23 Mar 2010 21:05:20 +0000 (21:05 +0000)
committerWilfried Göesgens <willi@citadel.org>
Tue, 23 Mar 2010 21:05:20 +0000 (21:05 +0000)
citadel/msgbase.c

index 1b99b9216b648745a0a5ea4d59e2a6b467d0221f..1657661bf4e642d80d2ed6f976129326a8b0b63c 100644 (file)
@@ -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;