]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.8] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233...
authorŁukasz Langa <lukasz@langa.pl>
Wed, 4 Sep 2024 15:36:17 +0000 (17:36 +0200)
committerGitHub <noreply@github.com>
Wed, 4 Sep 2024 15:36:17 +0000 (17:36 +0200)
commitb158a76ce094897c870fb6b3de62887b7ccc33f1
treeae4fde7fd5bcf6b7b170030ba69308f489774d3d
parente319f774f9e766a2b92949444a2d46081df3363a
[3.8] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122611)

Per RFC 2047:

> [...] these encoding schemes allow the
> encoding of arbitrary octet values, mail readers that implement this
> decoding should also ensure that display of the decoded data on the
> recipient's terminal will not cause unwanted side-effects

It seems that the "quoted-word" scheme is a valid way to include
a newline character in a header value, just like we already allow
undecodable bytes or control characters.
They do need to be properly quoted when serialized to text, though.

This should fail for custom fold() implementations that aren't careful
about newlines.

(cherry picked from commit 097633981879b3c9de9a1dd120d3aa585ecc2384)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Bas Bloemsaat <bas@bloemsaat.org>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Doc/library/email.errors.rst
Doc/library/email.policy.rst
Doc/whatsnew/3.8.rst
Lib/email/_header_value_parser.py
Lib/email/_policybase.py
Lib/email/errors.py
Lib/email/generator.py
Lib/test/test_email/test_generator.py
Lib/test/test_email/test_policy.py
Misc/NEWS.d/next/Library/2024-07-27-16-10-41.gh-issue-121650.nf6oc9.rst [new file with mode: 0644]