From facb44cb03533aad57b3d982fab692f25c937e9a Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Mon, 15 Oct 2018 10:00:18 +0000 Subject: [PATCH] Ensure that vendor-defined characters in ISO-2022-JP email subject don't break issue's subject (#29442). Patch by Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@17596 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/fixtures/mail_handler/subject_japanese_3.eml | 9 +++++++++ test/unit/mail_handler_test.rb | 14 ++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 test/fixtures/mail_handler/subject_japanese_3.eml diff --git a/test/fixtures/mail_handler/subject_japanese_3.eml b/test/fixtures/mail_handler/subject_japanese_3.eml new file mode 100644 index 000000000..710da8776 --- /dev/null +++ b/test/fixtures/mail_handler/subject_japanese_3.eml @@ -0,0 +1,9 @@ +From: John Smith +To: "redmine@somenet.foo" +Subject: =?iso-2022-jp?B?GyRCLSEbKEIgGyRCNF0/dDt6JUYlOSVIGyhC?= +Date: Mon, 27 Aug 2018 09:30:00 +0900 +Message-ID: <87C31D42249DD0489D1A1444E3232DD7019D6183@foo.bar> + +The subject contains a "CIRCLED DIGIT ONE" character (U+2460). +It is undefined in ISO-2022-JP but defined in some vendor-extended +variants such as ISO-2022-JP-MS. diff --git a/test/unit/mail_handler_test.rb b/test/unit/mail_handler_test.rb index 51219d65e..e63ab0958 100644 --- a/test/unit/mail_handler_test.rb +++ b/test/unit/mail_handler_test.rb @@ -741,6 +741,20 @@ class MailHandlerTest < ActiveSupport::TestCase assert_equal ja, issue.subject end + def test_add_issue_with_iso_2022_jp_ms_subject + # The original subject is "① 丸数字テスト". + # CIRCLED DIGIT ONE character is undefined in ISO-2022-JP but + # defined in some vendor-extended variants such as ISO-2022-JP-MS. + # This test makes sure that mail gem replaces an undefined characters + # with a replacement character instead of breaking the whole subject. + issue = submit_email( + 'subject_japanese_3.eml', + :issue => {:project => 'ecookbook'} + ) + assert_kind_of Issue, issue + assert_match /丸数字テスト/, issue.subject + end + def test_should_ignore_emails_from_locked_users User.find(2).lock! -- 2.39.5