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

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.9.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]