commit cd8441837c5cd16cc35b951d96415a0f80671fe2
parent 8ce82d84eef45ed3de89ea90f00abc349fca19cd
Author: Dan Callaghan <djc@djc.id.au>
Date: Sun, 12 Jul 2020 17:32:42 +1000
tests: add a case for parsing non-ASCII headers
Diffstat:
2 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/test/fixtures/non-ascii-header.eml b/test/fixtures/non-ascii-header.eml
@@ -0,0 +1,8 @@
+Return-Path: <spammer@example.com>
+From: SPAM � <spammer@example.com>
+To: <a@b.c>
+Subject: spam � spam
+Message-Id: <20120302063755.0FE2122017@a.a.a.a>
+Date: Fri, 2 Mar 2012 07:37:55 +0100 (CET)
+
+https://github.com/sup-heliotrope/sup/issues/205
diff --git a/test/test_message.rb b/test/test_message.rb
@@ -232,6 +232,22 @@ class TestMessage < Minitest::Test
end
+ def test_nonascii_header
+ ## Headers are supposed to be 7-bit ASCII, with non-ASCII characters encoded
+ ## using RFC2047 header encoding. But spammers sometimes send high bytes in
+ ## the headers. They will be replaced with U+FFFD REPLACEMENT CHARACTER.
+ source = DummySource.new("sup-test://test_nonascii_header")
+ source.messages = [ fixture_path("non-ascii-header.eml") ]
+ source_info = 0
+
+ sup_message = Message.build_from_source(source, source_info)
+ sup_message.load_from_source!
+
+ assert_equal("SPAM \ufffd", sup_message.from.name)
+ assert_equal("spammer@example.com", sup_message.from.email)
+ assert_equal("spam \ufffd spam", sup_message.subj)
+ end
+
def test_malicious_attachment_names
source = DummySource.new("sup-test://test_blank_header_lines")
source.messages = [ fixture_path('malicious-attachment-names.eml') ]