]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.13] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Tue, 6 Aug 2024 17:06:41 +0000 (19:06 +0200)
committerGitHub <noreply@github.com>
Tue, 6 Aug 2024 17:06:41 +0000 (19:06 +0200)
commit4aaa4259b5a6e664b7316a4d60bdec7ee0f124d0
tree91f49bd4a759569b8c98343c5d591f0db08c77cf
parentd5e7d0a4684e496889c90f951ee7d78a9da9f5b9
[3.13] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122484)

gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233)

GH-GH- Encode header parts that contain newlines

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.

GH-GH- Verify that email headers are well-formed

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