• Michael Gratton's avatar
    Ensure encoded mailbox addresses are decoded correctly. · 8a1906fa
    Michael Gratton authored
    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.
    8a1906fa
rfc822-mailbox-address-test.vala 12.9 KB