Ensure encoded mailbox addresses are decoded correctly.
Both RFC mailbox address names and mailboxes/local-names may by RFC 2047 be Quoted-Printable or Base64 encoded. This patch ensures these parts are correctly decoded when parsing a RFC 822 message, so that they are displayed to the user in human-readable form. Part 2 of Mailsploit mitigation. * src/engine/rfc822/rfc822-message.vala (Message): Since GMime.Message's convenience properties for accessing header values such as senders, recipients, etc. in string form are presented as human-readable, not RFC822 compliant strings, we can't re-parse them for use by this class when it is being constructed from a GMime-based source. Instead, iterate over all headers to get the raw values and parse those we are interested in instead. Add unit tests. * src/engine/rfc822/rfc822-mailbox-address.vala (BaseObject): Add gmime constructor so we can handle construction and decoding from a GMime InternetAddressMailbox object in a consistent way. Ensure both names are decoded correctly, and mailboxes are decoded at all, from both GMime and IMAP sources. If a GMime source's address has no @-symbol, try to decode the whole thing first it in case the whole address is encoded. Add unit tests. * src/engine/rfc822/rfc822-mailbox-addresses.vala (MailboxAddresses): Add append method and handle group addresses here instead of in Message to simplify updated Message implementation. * src/engine/rfc822/rfc822-message-data.vala (MessageData): Add append method to simplify updated Message implementation.
This commit is contained in:
parent
8810e95753
commit
8a1906fa96
7 changed files with 379 additions and 147 deletions
|
|
@ -1376,7 +1376,7 @@ namespace GMime {
|
|||
[CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_structured_header_fold")]
|
||||
public static string utils_structured_header_fold (string header);
|
||||
[CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_text_is_8bit")]
|
||||
public static bool utils_text_is_8bit (uint text, size_t len);
|
||||
public static bool utils_text_is_8bit (string text, size_t len);
|
||||
[CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_unquote_string")]
|
||||
public static void utils_unquote_string (string str);
|
||||
[CCode (cheader_filename = "gmime/gmime.h", cname = "g_mime_utils_unstructured_header_fold")]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue