This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author rad164
Recipients barry, r.david.murray, rad164
Date 2018-05-16.00:12:26
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1526429548.63.0.682650639539.issue33529@psf.upfronthosting.co.za>
In-reply-to
Content
I just reported a bug about email folding at issue 33524, but this issue is more fatal in some languages like Chinese or Japanese, which does not insert spaces between each words. Python 3.6.5 has this issue, while 3.6.4 does not. Create an email with longer header than max_line_length set by its policy. And the header contains non-ascii characters but no white spaces. When try to fold it, python gets stuck and finally system hangs. There are no output unless I stop it with Ctrl-C. ^CTraceback (most recent call last): File "emailtest.py", line 7, in <module> policy.fold("Subject", msg["Subject"]) File "/usr/lib/python3.6/email/policy.py", line 183, in fold return self._fold(name, value, refold_binary=True) File "/usr/lib/python3.6/email/policy.py", line 205, in _fold return value.fold(policy=self) File "/usr/lib/python3.6/email/headerregistry.py", line 258, in fold return header.fold(policy=policy) File "/usr/lib/python3.6/email/_header_value_parser.py", line 144, in fold return _refold_parse_tree(self, policy=policy) File "/usr/lib/python3.6/email/_header_value_parser.py", line 2651, in _refold_parse_tree part.ew_combine_allowed, charset) File "/usr/lib/python3.6/email/_header_value_parser.py", line 2735, in _fold_as_ew ew = _ew.encode(first_part) File "/usr/lib/python3.6/email/_encoded_words.py", line 215, in encode blen = _cte_encode_length['b'](bstring) File "/usr/lib/python3.6/email/_encoded_words.py", line 130, in len_b groups_of_3, leftover = divmod(len(bstring), 3) KeyboardInterrupt Code to reproduce: from email.message import EmailMessage from email.policy import default policy = default # max_line_length = 78 msg = EmailMessage() msg["Subject"] = "á"*100 policy.fold("Subject", msg["Subject"]) No problems in following cases: 1. If the header is shorter than max_line_length. 2. If the header can be split with spaces and the all chunk is shorter than max_line_length. 3. If the header is fully composed with ascii characters. In this case, there is no problem even if it is very long without spaces.
History
Date User Action Args
2018-05-16 00:12:28rad164setrecipients: + rad164, barry, r.david.murray
2018-05-16 00:12:28rad164setmessageid: <1526429548.63.0.682650639539.issue33529@psf.upfronthosting.co.za>
2018-05-16 00:12:28rad164linkissue33529 messages
2018-05-16 00:12:26rad164create