Geary.RFC822.MailboxAddress: Handle long headers being folded
Remove "\n " sequences from RFC822 text before decoding so that any long mailboxes/mailbox lists folded before the 80 char limit are unfolded. Fixes #1009
This commit is contained in:
parent
b51b933b6d
commit
3c4d5c5e9d
2 changed files with 18 additions and 9 deletions
|
|
@ -136,11 +136,11 @@ public class Geary.RFC822.MailboxAddress :
|
|||
: GMime.utils_decode_8bit(get_parser_options(), part.data)
|
||||
);
|
||||
|
||||
// unquote the string then decode the text
|
||||
text = GMime.utils_header_unfold(text);
|
||||
GMime.utils_unquote_string(text);
|
||||
|
||||
// Sometimes quoted printables contain unencoded spaces which trips up GMime, so we want to
|
||||
// encode them all here.
|
||||
// Sometimes quoted printables contain unencoded spaces which
|
||||
// trips up GMime, so we want to encode them all here.
|
||||
int offset = 0;
|
||||
int start;
|
||||
while ((start = text.index_of("=?", offset)) != -1) {
|
||||
|
|
|
|||
|
|
@ -234,12 +234,21 @@ class Geary.RFC822.MailboxAddressTest : TestCase {
|
|||
assert(new MailboxAddress("test", "example@example@example.com").is_spoofed() == true);
|
||||
assert(new MailboxAddress("'prefix-example@example.com'", "example@example.com").is_spoofed() == true);
|
||||
|
||||
try {
|
||||
assert(new MailboxAddress.from_rfc822_string("\"=?utf-8?b?dGVzdCIgPHBvdHVzQHdoaXRlaG91c2UuZ292Pg==?==?utf-8?Q?=00=0A?=\" <demo@mailsploit.com>")
|
||||
.is_spoofed() == true);
|
||||
} catch (Error err) {
|
||||
assert_no_error(err);
|
||||
}
|
||||
assert_false(
|
||||
new MailboxAddress.from_rfc822_string(
|
||||
"hello\n there <example@example.com>"
|
||||
).is_spoofed()
|
||||
);
|
||||
assert_false(
|
||||
new MailboxAddress.from_rfc822_string(
|
||||
"\"hello\n there\" <example@example.com>"
|
||||
).is_spoofed()
|
||||
);
|
||||
assert_true(
|
||||
new MailboxAddress.from_rfc822_string(
|
||||
"\"=?utf-8?b?dGVzdCIgPHBvdHVzQHdoaXRlaG91c2UuZ292Pg==?==?utf-8?Q?=00=0A?=\" <demo@mailsploit.com>"
|
||||
).is_spoofed()
|
||||
);
|
||||
}
|
||||
|
||||
public void to_full_display() throws GLib.Error {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue