Merge branch 'master' of ssh://git.citadel.org/appl/gitroot/citadel
authorArt Cancro <ajc@citadel.org>
Fri, 10 Dec 2010 18:31:54 +0000 (13:31 -0500)
committerArt Cancro <ajc@citadel.org>
Fri, 10 Dec 2010 18:31:54 +0000 (13:31 -0500)
citadel/msgbase.c
libcitadel/lib/mime_parser.c

index 41b8171b9fb289f34697063d02dae06f9a2a5da9..9c8ab860216f2c0cf214bfc626ac4c9612c95a49 100644 (file)
@@ -1460,7 +1460,7 @@ void output_preferred(char *name,
                extract_token(buf, CC->preferred_formats, i, '|', sizeof buf);
                if (!strcasecmp(buf, cbtype)) {
                        /* Yeah!  Go!  W00t!! */
-                       if (ma->dont_decode == 0)
+                       if (ma->dont_decode == 0) 
                                rc = mime_decode_now (content, 
                                                      length,
                                                      encoding,
@@ -1492,7 +1492,7 @@ void output_preferred(char *name,
                        }
                        cprintf("X-Citadel-MSG4-Partnum: %s\n", partnum);
                        cprintf("\n");
-                       client_write(content, length);
+                       client_write(text_content, length);
                        if (add_newline) cprintf("\n");
                        if (decoded != NULL) free(decoded);
                        return;
index e6d65e9f42be5dfd13bfd392a37e554399df37cf..24b76477975128251fcfffb8386da929487c14ff 100644 (file)
@@ -406,6 +406,7 @@ static long parse_MimeHeaders(interesting_mime_headers *m,
                if (!isspace(buf[0]) && (headerlen > 0)) {
                        if (!strncasecmp(header, "Content-type:", 13)) {
                                memcpy (m->b[content_type].Key, &header[13], headerlen - 12);
+                               m->b[content_type].Key[headerlen - 12] = '\0';
                                m->b[content_type].len = striplt (m->b[content_type].Key);
 
                                m->b[content_type_name].len = extract_key(m->b[content_type_name].Key, CKEY(m->b[content_type]), HKEY("name"), '=');
@@ -426,6 +427,7 @@ static long parse_MimeHeaders(interesting_mime_headers *m,
                        }
                        else if (!strncasecmp(header, "Content-Disposition:", 20)) {
                                memcpy (m->b[disposition].Key, &header[20], headerlen - 19);
+                               m->b[disposition].Key[headerlen - 19] = '\0';
                                m->b[disposition].len = striplt(m->b[disposition].Key);
 
                                m->b[content_disposition_name].len = extract_key(m->b[content_disposition_name].Key, CKEY(m->b[disposition]), HKEY("name"), '=');
@@ -435,7 +437,8 @@ static long parse_MimeHeaders(interesting_mime_headers *m,
                                m->b[disposition].len = striplt(m->b[disposition].Key);
                        }
                        else if (!strncasecmp(header, "Content-ID:", 11)) {
-                               memcpy(m->b[id].Key, &header[11], headerlen);
+                               memcpy(m->b[id].Key, &header[11], headerlen - 11);
+                               m->b[id].Key[headerlen - 11] = '\0';
                                striplt(m->b[id].Key);
                                m->b[id].len = stripallbut(m->b[id].Key, '<', '>');
                        }
@@ -448,6 +451,7 @@ static long parse_MimeHeaders(interesting_mime_headers *m,
                        }
                        else if (!strncasecmp(header, "Content-transfer-encoding: ", 26)) {
                                memcpy(m->b[encoding].Key, &header[26], headerlen - 26);
+                               m->b[encoding].Key[headerlen - 26] = '\0';
                                m->b[encoding].len = striplt(m->b[encoding].Key);
                        }
                        *header = '\0';