Compare commits
4 Commits
e60b982832
...
f6d68db718
Author | SHA1 | Date |
---|---|---|
gfgit | f6d68db718 | |
gfgit | c81eedcc83 | |
gfgit | 498ff8440a | |
gfgit | f0d8126249 |
|
@ -1416,12 +1416,11 @@ gint messageview_show(MessageView *messageview, MsgInfo *msginfo,
|
|||
g_free(text);
|
||||
break;
|
||||
}
|
||||
if (mimeinfo->extra_headers){
|
||||
if (mimeinfo->protected_headers){
|
||||
g_message("messageview_show: found extra headers after encryption");
|
||||
|
||||
for(int i = 0; i < mimeinfo->extra_headers->len; i++) {
|
||||
Header *hp = g_ptr_array_index(mimeinfo->extra_headers, i);
|
||||
g_message("Extra Header %d - %s %s", i, hp->name, hp->body);
|
||||
for(int i = 0; i < mimeinfo->protected_headers->len; i++) {
|
||||
Header *hp = g_ptr_array_index(mimeinfo->protected_headers, i);
|
||||
msginfo_add_protected_header(msginfo, hp);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -326,16 +326,10 @@ static MimeInfo *pgpmime_decrypt(MimeInfo *mimeinfo)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
if (parseinfo->extra_headers != NULL) {
|
||||
if (parseinfo->protected_headers != NULL) {
|
||||
g_message("PGP Plugin: decrypted message has protected headers");
|
||||
|
||||
for(int i = 0; i < parseinfo->extra_headers->len; i++) {
|
||||
Header *hp = g_ptr_array_index(parseinfo->extra_headers, i);
|
||||
g_message("Extra Header %d - %s %s", i, hp->name, hp->body);
|
||||
}
|
||||
|
||||
decinfo->extra_headers = parseinfo->extra_headers;
|
||||
parseinfo->extra_headers = NULL;
|
||||
decinfo->protected_headers = parseinfo->protected_headers;
|
||||
parseinfo->protected_headers = NULL;
|
||||
}
|
||||
|
||||
g_node_unlink(decinfo->node);
|
||||
|
@ -728,16 +722,12 @@ static void pgpmime_add_header_no_content(void *header, void *data) {
|
|||
|
||||
if (!procheader_headername_equal(hdr->name,"Content-Type")) {
|
||||
if ( g_hash_table_lookup(mimeinfo->typeparameters,"protected-headers"))
|
||||
g_message("Parser Found protected header: %s %s",hdr->name, hdr->body);
|
||||
else
|
||||
g_message("Parser Found rfc822-header: %s %s",hdr->name, hdr->body);
|
||||
procmime_mimeinfo_add_extra_header(mimeinfo, hdr);
|
||||
procmime_mimeinfo_add_extra_header(mimeinfo, hdr);
|
||||
}
|
||||
}
|
||||
|
||||
static gboolean protected_headers_parse (MimeParser *parser, MimeInfo *mimeinfo) {
|
||||
FILE *fp;
|
||||
g_message("Parsing rfc822-header mime part");
|
||||
|
||||
fp = claws_fopen(mimeinfo->data.filename, "rb");
|
||||
if (!fp) {
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include "privacy.h"
|
||||
#include "procmime.h"
|
||||
#include "procmsg.h"
|
||||
#include "procheader.h"
|
||||
|
||||
static GSList *systems = NULL;
|
||||
static gchar *privacy_last_error = NULL;
|
||||
|
@ -327,18 +326,9 @@ static gint decrypt(MimeInfo *mimeinfo, PrivacySystem *system)
|
|||
|
||||
procmime_mimeinfo_free_all(&mimeinfo);
|
||||
|
||||
if (decryptedinfo->extra_headers) {
|
||||
if (parentinfo) {
|
||||
g_message("Propagating extra headers up after decrpyt()");
|
||||
parentinfo->extra_headers = decryptedinfo->extra_headers;
|
||||
decryptedinfo->extra_headers = NULL;
|
||||
|
||||
for(int i = 0; i < parentinfo->extra_headers->len; i++) {
|
||||
Header *hp = g_ptr_array_index(parentinfo->extra_headers, i);
|
||||
g_message("Extra Header %d - %s %s", i, hp->name, hp->body);
|
||||
}
|
||||
} else
|
||||
g_message("Identified extra headers up after decrpyt()");
|
||||
if (decryptedinfo->protected_headers) {
|
||||
parentinfo->protected_headers = decryptedinfo->protected_headers;
|
||||
decryptedinfo->protected_headers = NULL;
|
||||
}
|
||||
g_node_insert(parentinfo->node, childnumber, decryptedinfo->node);
|
||||
|
||||
|
|
|
@ -149,9 +149,8 @@ static gboolean free_func(GNode *node, gpointer data)
|
|||
if (mimeinfo->sig_data)
|
||||
privacy_free_signature_data(mimeinfo->sig_data);
|
||||
|
||||
if (mimeinfo->extra_headers) {
|
||||
g_warning("Extra Header gets FREED!");
|
||||
g_ptr_array_free(mimeinfo->extra_headers, TRUE);
|
||||
if (mimeinfo->protected_headers) {
|
||||
g_ptr_array_free(mimeinfo->protected_headers, TRUE);
|
||||
}
|
||||
|
||||
g_free(mimeinfo);
|
||||
|
@ -1032,9 +1031,6 @@ FILE *procmime_get_first_encrypted_text_content(MsgInfo *msginfo)
|
|||
privacy_get_error());
|
||||
return NULL;
|
||||
}
|
||||
if ( encinfo->extra_headers ) {
|
||||
g_message("get_first_encrypted_text: found extra headers during decryption");
|
||||
}
|
||||
}
|
||||
partinfo = mimeinfo;
|
||||
while (partinfo && partinfo->type != MIMETYPE_TEXT) {
|
||||
|
@ -1521,7 +1517,7 @@ static void procmime_parse_message_rfc822(MimeInfo *mimeinfo, gboolean short_sca
|
|||
FILE *fp;
|
||||
gchar *tmp;
|
||||
gint len = 0;
|
||||
GPtrArray *headers = NULL;
|
||||
GPtrArray *additional_headers = NULL;
|
||||
|
||||
procmime_decode_content(mimeinfo);
|
||||
|
||||
|
@ -1538,7 +1534,7 @@ static void procmime_parse_message_rfc822(MimeInfo *mimeinfo, gboolean short_sca
|
|||
return;
|
||||
}
|
||||
|
||||
headers = procheader_get_all_header_fields(fp, hentry);
|
||||
additional_headers = procheader_get_all_header_fields(fp, hentry);
|
||||
|
||||
if (hentry[0].body != NULL) {
|
||||
tmp = conv_unmime_header(hentry[0].body, NULL, FALSE);
|
||||
|
@ -1581,9 +1577,9 @@ static void procmime_parse_message_rfc822(MimeInfo *mimeinfo, gboolean short_sca
|
|||
* We can replace item witn NULL to state it should not be freed and we take ownership
|
||||
* instead of stealing it which forces array to resize and move items around.
|
||||
*/
|
||||
while(headers->len) {
|
||||
while(additional_headers->len) {
|
||||
/* Take ownership because header is passed to mimeinfo struct without copy */
|
||||
Header *header = (Header *)g_ptr_array_steal_index(headers, 0);
|
||||
Header *header = (Header *)g_ptr_array_steal_index(additional_headers, 0);
|
||||
/* TODO: Sanity check, remove for prod!*/
|
||||
// g_message("testing Header: %s", headbuf);
|
||||
hp = &hentry[0];
|
||||
|
@ -1603,7 +1599,7 @@ static void procmime_parse_message_rfc822(MimeInfo *mimeinfo, gboolean short_sca
|
|||
procmime_mimeinfo_add_extra_header(mimeinfo, header);
|
||||
}
|
||||
}
|
||||
g_ptr_array_unref(headers);
|
||||
g_ptr_array_unref(additional_headers);
|
||||
|
||||
content_start = ftell(fp);
|
||||
claws_fclose(fp);
|
||||
|
@ -1803,12 +1799,12 @@ static void procmime_parse_multipart(MimeInfo *mimeinfo, gboolean short_scan)
|
|||
if (hp->name == NULL)
|
||||
/* TODO: End sanity check */
|
||||
g_message("Found extra (protected) Header: %s",headbuf);
|
||||
if ( mimeinfo->extra_headers == NULL ) {
|
||||
mimeinfo->extra_headers = g_ptr_array_new();
|
||||
if ( mimeinfo->protected_headers == NULL ) {
|
||||
mimeinfo->protected_headers = g_ptr_array_new();
|
||||
}
|
||||
Header *header = procheader_parse_header(headbuf);
|
||||
if ( header != NULL )
|
||||
g_ptr_array_add(mimeinfo->extra_headers, header);
|
||||
g_ptr_array_add(mimeinfo->protected_headers, header);
|
||||
else
|
||||
g_warning("Found header line which cannot be parsed: %s",headbuf);
|
||||
}
|
||||
|
@ -2160,10 +2156,10 @@ static gboolean procmime_mimeparser_parse(MimeParser *parser, MimeInfo *mimeinfo
|
|||
}
|
||||
|
||||
void procmime_mimeinfo_add_extra_header(MimeInfo *mimeinfo, Header *header) {
|
||||
if ( mimeinfo->extra_headers == NULL )
|
||||
mimeinfo->extra_headers = g_ptr_array_new();
|
||||
if ( mimeinfo->extra_headers != NULL )
|
||||
g_ptr_array_add(mimeinfo->extra_headers, header);
|
||||
if ( mimeinfo->protected_headers == NULL )
|
||||
mimeinfo->protected_headers = g_ptr_array_new();
|
||||
if ( mimeinfo->protected_headers != NULL )
|
||||
g_ptr_array_add(mimeinfo->protected_headers, header);
|
||||
}
|
||||
|
||||
static int procmime_parse_mimepart(MimeInfo *parent,
|
||||
|
@ -2285,16 +2281,11 @@ static int procmime_parse_mimepart(MimeInfo *parent,
|
|||
break;
|
||||
}
|
||||
}
|
||||
if ( mimeinfo->extra_headers != NULL ) {
|
||||
if ( mimeinfo->protected_headers != NULL ) {
|
||||
g_message("Parsed a message with protected-headers, propagating upwards to %p",parent);
|
||||
if (parent != NULL) {
|
||||
parent->extra_headers = mimeinfo->extra_headers;
|
||||
mimeinfo->extra_headers = NULL;
|
||||
|
||||
for(int i = 0; i < parent->extra_headers->len; i++) {
|
||||
Header *hp = g_ptr_array_index(parent->extra_headers, i);
|
||||
g_message("Extra Header %d - %s %s", i, hp->name, hp->body);
|
||||
}
|
||||
parent->protected_headers = mimeinfo->protected_headers;
|
||||
mimeinfo->protected_headers = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2355,9 +2346,6 @@ static MimeInfo *procmime_scan_file_with_offset(const gchar *filename, int offse
|
|||
mimeinfo->length = buf.st_size - offset;
|
||||
|
||||
procmime_parse_message_rfc822(mimeinfo, short_scan);
|
||||
if ( mimeinfo->extra_headers ) {
|
||||
g_message("Parsed a file which includes protected headers");
|
||||
}
|
||||
if (debug_get_mode())
|
||||
output_mime_structure(mimeinfo, 0);
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ struct _MimeInfo
|
|||
gboolean broken;
|
||||
|
||||
/* protected headers */
|
||||
GPtrArray *extra_headers;
|
||||
GPtrArray *protected_headers;
|
||||
};
|
||||
|
||||
#define IS_BOUNDARY(s, bnd, len) \
|
||||
|
|
Loading…
Reference in New Issue