]> code.citadel.org Git - citadel.git/blobdiff - citadel/msgbase.c
* Disable the XMPP-mortuary code. It's not ready for production yet.
[citadel.git] / citadel / msgbase.c
index 77b020b957dde8046d26b639e236434186bef63d..9d6c6acf057e3f1ed47b6cdae87ab0f4c7ff3f2b 100644 (file)
@@ -1170,7 +1170,8 @@ struct CtdlMessage *CtdlFetchMessage(long msgnum, int with_body)
        if ( (ret->cm_fields['M'] == NULL) && (with_body) ) {
                dmsgtext = cdb_fetch(CDB_BIGMSGS, &msgnum, sizeof(long));
                if (dmsgtext != NULL) {
-                       ret->cm_fields['M'] = strdup(dmsgtext->ptr);
+                       ret->cm_fields['M'] = dmsgtext->ptr;
+                       dmsgtext->ptr = NULL;
                        cdb_free(dmsgtext);
                }
        }
@@ -1572,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;
@@ -1590,6 +1591,8 @@ char *qp_encode_email_addrs(char *source)
 
        if (source == NULL) return source;
        if (IsEmptyStr(source)) return source;
+       cit_backtrace();
+       CtdlLogPrintf(CTDL_DEBUG, "qp_encode_email_addrs: [%s]\n", source);
 
        AddrPtr = malloc (sizeof (long) * nAddrPtrMax);
        AddrUtf8 = malloc (sizeof (long) * nAddrPtrMax);
@@ -1637,6 +1640,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';
@@ -1680,6 +1687,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;
@@ -1722,7 +1733,7 @@ int CtdlOutputPreLoadedMsg(
                int crlf,               /* Use CRLF newlines instead of LF? */
                int flags               /* should the bessage be exported clean? */
 ) {
-       int i, j, k;
+       int i, j, k, n;
        char buf[SIZ];
        cit_uint8_t ch, prev_ch;
        char allkeys[30];
@@ -1874,8 +1885,8 @@ int CtdlOutputPreLoadedMsg(
                }
 
                /* Now spew the header fields in the order we like them. */
-               safestrncpy(allkeys, FORDER, sizeof allkeys);
-               for (i=0; i<strlen(allkeys); ++i) {
+               n = safestrncpy(allkeys, FORDER, sizeof allkeys);
+               for (i=0; i<n; ++i) {
                        k = (int) allkeys[i];
                        if (k != 'M') {
                                if ( (TheMessage->cm_fields[k] != NULL)