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.
Showing with 378 additions and 146 deletions