]> code.citadel.org Git - citadel.git/blobdiff - webcit/messages.c
* check the buffersize while base64 encoding; and adjust it if needed.
[citadel.git] / webcit / messages.c
index 032b79c04b9337d238cbeb9391a2364a1a64268b..abe91b05e77848873b194289ddebbca617a6d6da 100644 (file)
@@ -665,6 +665,7 @@ void read_message(long msgnum, int printable_view, char *section) {
        char mime_partnum[256];
        char mime_name[256];
        char mime_filename[256];
+       char escaped_mime_filename[256];
        char mime_content_type[256];
        char mime_charset[256];
        char mime_disposition[256];
@@ -857,6 +858,7 @@ void read_message(long msgnum, int printable_view, char *section) {
                                attach_links = realloc(attach_links,
                                        (num_attach_links*sizeof(struct attach_link)));
                                safestrncpy(attach_links[num_attach_links-1].partnum, mime_partnum, 32);
+                               urlesc(escaped_mime_filename, mime_filename);
                                snprintf(attach_links[num_attach_links-1].html, 1024,
                                        "<img src=\"static/diskette_24x.gif\" "
                                        "border=0 align=middle>\n"
@@ -868,10 +870,10 @@ void read_message(long msgnum, int printable_view, char *section) {
                                        " ]<br />\n",
                                        mime_filename,
                                        mime_content_type, mime_length,
-                                       msgnum, mime_partnum, mime_filename,
+                                       msgnum, mime_partnum, escaped_mime_filename,
                                        msgnum, mime_partnum,
                                        _("View"),
-                                       msgnum, mime_partnum, mime_filename,
+                                       msgnum, mime_partnum, escaped_mime_filename,
                                        _("Download")
                                );
                        }
@@ -2753,6 +2755,7 @@ void post_mime_to_server(void) {
        struct wc_attachment *att;
        char *encoded;
        size_t encoded_length;
+       size_t encoded_strlen;
 
        /** RFC2045 requires this, and some clients look for it... */
        serv_puts("MIME-Version: 1.0");
@@ -2792,7 +2795,7 @@ void post_mime_to_server(void) {
                        encoded_length = ((att->length * 150) / 100);
                        encoded = malloc(encoded_length);
                        if (encoded == NULL) break;
-                       CtdlEncodeBase64(encoded, att->data, att->length, 1);
+                       encoded_strlen = CtdlEncodeBase64(&encoded, att->data, att->length, &encoded_length, 1);
 
                        serv_printf("--%s", boundary);
                        serv_printf("Content-type: %s", att->content_type);
@@ -2800,7 +2803,7 @@ void post_mime_to_server(void) {
                                "filename=\"%s\"", att->filename);
                        serv_puts("Content-transfer-encoding: base64");
                        serv_puts("");
-                       serv_write(encoded, strlen(encoded));
+                       serv_write(encoded, encoded_strlen);
                        serv_puts("");
                        serv_puts("");
                        free(encoded);