diff options
author | Ćukasz Langa <lukasz@langa.pl> | 2024-09-04 15:37:28 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-04 15:37:28 (GMT) |
commit | f7c0f09e69e950cf3c5ada9dbde93898eb975533 (patch) | |
tree | 91569900c3db310b929e24c461a3278bcc6c6ece /Lib/email/errors.py | |
parent | d449caf8a179e3b954268b3a88eb9170be3c8fbf (diff) | |
download | cpython-f7c0f09e69e950cf3c5ada9dbde93898eb975533.zip cpython-f7c0f09e69e950cf3c5ada9dbde93898eb975533.tar.gz cpython-f7c0f09e69e950cf3c5ada9dbde93898eb975533.tar.bz2 |
[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 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>
Diffstat (limited to 'Lib/email/errors.py')
-rw-r--r-- | Lib/email/errors.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/Lib/email/errors.py b/Lib/email/errors.py index 3ad0056..02aa5ec 100644 --- a/Lib/email/errors.py +++ b/Lib/email/errors.py @@ -29,6 +29,10 @@ class CharsetError(MessageError): """An illegal charset was given.""" +class HeaderWriteError(MessageError): + """Error while writing headers.""" + + # These are parsing defects which the parser was able to work around. class MessageDefect(ValueError): """Base class for a message defect.""" |