summaryrefslogtreecommitdiffstats
path: root/Lib/email/errors.py
diff options
context:
space:
mode:
authorƁukasz Langa <lukasz@langa.pl>2024-09-04 15:38:31 (GMT)
committerGitHub <noreply@github.com>2024-09-04 15:38:31 (GMT)
commit06f28dc236708f72871c64d4bc4b4ea144c50147 (patch)
treea2df5306ddcddc350d42bd9025b3a9e20e99a0bd /Lib/email/errors.py
parent743acbe872485dc18df4d8ab2dc7895187f062c4 (diff)
downloadcpython-06f28dc236708f72871c64d4bc4b4ea144c50147.zip
cpython-06f28dc236708f72871c64d4bc4b4ea144c50147.tar.gz
cpython-06f28dc236708f72871c64d4bc4b4ea144c50147.tar.bz2
[3.10] gh-121650: Encode newlines in headers, and verify headers are sound (GH-122233) (#122609)
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>
Diffstat (limited to 'Lib/email/errors.py')
-rw-r--r--Lib/email/errors.py4
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."""