[geary] Geary.RFC822.MailboxAddress: Handle long headers being folded
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary] Geary.RFC822.MailboxAddress: Handle long headers being folded
- Date: Wed, 20 Jan 2021 08:24:52 +0000 (UTC)
commit 3c4d5c5e9d1444cce1e2027091c4558262ef1a70
Author: Michael Gratton <mike vee net>
Date: Wed Jan 20 19:22:46 2021 +1100
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
src/engine/rfc822/rfc822-mailbox-address.vala | 6 +++---
test/engine/rfc822/rfc822-mailbox-address-test.vala | 21 +++++++++++++++------
2 files changed, 18 insertions(+), 9 deletions(-)
---
diff --git a/src/engine/rfc822/rfc822-mailbox-address.vala b/src/engine/rfc822/rfc822-mailbox-address.vala
index 1e23fca47..90a337a2c 100644
--- a/src/engine/rfc822/rfc822-mailbox-address.vala
+++ b/src/engine/rfc822/rfc822-mailbox-address.vala
@@ -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) {
diff --git a/test/engine/rfc822/rfc822-mailbox-address-test.vala
b/test/engine/rfc822/rfc822-mailbox-address-test.vala
index fdef5b0b7..a79a1a861 100644
--- a/test/engine/rfc822/rfc822-mailbox-address-test.vala
+++ b/test/engine/rfc822/rfc822-mailbox-address-test.vala
@@ -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 {
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]