cpython/Lib/email
Łukasz Langa f7c0f09e69
[3.11] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122608)
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.

Verify that email headers are well-formed.

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

(cherry picked from commit 0976339818)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Bas Bloemsaat <bas@bloemsaat.org>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2024-09-04 17:37:28 +02:00
..
mime [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
__init__.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
_encoded_words.py bpo-43323: Fix UnicodeEncodeError in the email module (GH-32137) 2022-04-30 13:17:23 +03:00
_header_value_parser.py [3.11] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122608) 2024-09-04 17:37:28 +02:00
_parseaddr.py gh-95087: Fix IndexError in parsing invalid date in the email module (GH-95201) 2022-07-24 23:40:17 -07:00
_policybase.py [3.11] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122608) 2024-09-04 17:37:28 +02:00
architecture.rst
base64mime.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
charset.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
contentmanager.py bpo-46565: del loop vars that are leaking into module namespaces (GH-30993) 2022-02-03 11:20:08 +02:00
encoders.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
errors.py [3.11] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122608) 2024-09-04 17:37:28 +02:00
feedparser.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
generator.py [3.11] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122608) 2024-09-04 17:37:28 +02:00
header.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
headerregistry.py bpo-26579: Add object.__getstate__(). (GH-2821) 2022-04-06 20:00:14 +03:00
iterators.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
message.py [3.11] gh-76511: Fix email.Message.as_string() for non-ASCII message with ASCII charset (GH-116125) (GH-116365) 2024-03-05 17:32:30 +00:00
parser.py [3.11] gh-102507 Remove invisible pagebreak characters (GH-102531) (#108266) 2023-08-22 08:49:35 +00:00
policy.py [3.11] gh-77749: Fix inconsistent behavior of non-ASCII handling in EmailPolicy.fold() (GH-6986) (GH-114607) 2024-01-26 18:30:50 +02:00
quoprimime.py bpo-46565: del loop vars that are leaking into module namespaces (GH-30993) 2022-02-03 11:20:08 +02:00
utils.py [3.11] gh-94606: Fix error when message with Unicode surrogate not surrogateescaped string (GH-94641) (GH-112972) 2023-12-11 16:47:25 +00:00