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)
|
: 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);
|
GMime.utils_unquote_string(text);
|
||||||
|
|
||||||
// Sometimes quoted printables contain unencoded spaces which trips up GMime, so we want to
|
// Sometimes quoted printables contain unencoded spaces which
|
||||||
// encode them all here.
|
// trips up GMime, so we want to encode them all here.
|
||||||
int offset = 0;
|
int offset = 0;
|
||||||
int start;
|
int start;
|
||||||
while ((start = text.index_of("=?", offset)) != -1) {
|
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("test", "example@example@example.com").is_spoofed() == true);
|
||||||
assert(new MailboxAddress("'prefix-example@example.com'", "example@example.com").is_spoofed() == true);
|
assert(new MailboxAddress("'prefix-example@example.com'", "example@example.com").is_spoofed() == true);
|
||||||
|
|
||||||
try {
|
assert_false(
|
||||||
assert(new MailboxAddress.from_rfc822_string("\"=?utf-8?b?dGVzdCIgPHBvdHVzQHdoaXRlaG91c2UuZ292Pg==?==?utf-8?Q?=00=0A?=\" <demo@mailsploit.com>")
|
new MailboxAddress.from_rfc822_string(
|
||||||
.is_spoofed() == true);
|
"hello\n there <example@example.com>"
|
||||||
} catch (Error err) {
|
).is_spoofed()
|
||||||
assert_no_error(err);
|
);
|
||||||
}
|
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 {
|
public void to_full_display() throws GLib.Error {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue