cpython: d579866d6419 (original) (raw)
Mercurial > cpython
changeset 89067:d579866d6419 2.7
#14983: always add a line end after a MIME boundary marker. This is more RFC compliant (see issue) and fixes a problem with signature verifiers rejecting the part when signed. There is some amount of backward compatibility concern here since it changes the output, but the RFC issue coupled with fixing the problem with signature verifiers seems worth the small risk of breaking code that depends on the current incorrect output. [#14983]
R David Murray rdmurray@bitdance.com | |
---|---|
date | Sat, 08 Feb 2014 17:54:12 -0500 |
parents | d4f9efd4be7d |
children | 6b10943a5916 |
files | Lib/email/generator.py Lib/email/test/data/msg_02.txt Lib/email/test/test_email.py Lib/email/test/test_email_renamed.py Misc/NEWS |
diffstat | 5 files changed, 26 insertions(+), 12 deletions(-)[+] [-] Lib/email/generator.py 3 Lib/email/test/data/msg_02.txt 1 Lib/email/test/test_email.py 15 Lib/email/test/test_email_renamed.py 15 Misc/NEWS 4 |
line wrap: on
line diff
--- a/Lib/email/generator.py +++ b/Lib/email/generator.py @@ -231,9 +231,8 @@ class Generator: # body-part self._fp.write(body_part) # close-delimiter transport-padding
self._fp.write('\n--' + boundary + '--')[](#l1.7)
self._fp.write('\n--' + boundary + '--' + NL)[](#l1.8) if msg.epilogue is not None:[](#l1.9)
print >> self._fp[](#l1.10) if self._mangle_from_:[](#l1.11) epilogue = fcre.sub('>From ', msg.epilogue)[](#l1.12) else:[](#l1.13)
--- a/Lib/email/test/data/msg_02.txt +++ b/Lib/email/test/data/msg_02.txt @@ -119,6 +119,7 @@ hello -------- + --192.168.1.2.889.32614.987812255.500.21814 Content-type: text/plain; charset=us-ascii Content-description: Digest Footer
--- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -1206,7 +1206,8 @@ From: bperson@dom.ain --BOUNDARY ---BOUNDARY--''') +--BOUNDARY-- +''') def test_no_parts_in_a_multipart_with_empty_epilogue(self): outer = MIMEBase('multipart', 'mixed') @@ -1251,7 +1252,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_empty_preamble(self): eq = self.ndiffAssertEqual @@ -1277,7 +1279,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_none_preamble(self): @@ -1303,7 +1306,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_none_epilogue(self): @@ -1329,7 +1333,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_empty_epilogue(self):
--- a/Lib/email/test/test_email_renamed.py +++ b/Lib/email/test/test_email_renamed.py @@ -1146,7 +1146,8 @@ From: bperson@dom.ain --BOUNDARY ---BOUNDARY--''') +--BOUNDARY-- +''') def test_no_parts_in_a_multipart_with_empty_epilogue(self): outer = MIMEBase('multipart', 'mixed') @@ -1191,7 +1192,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_empty_preamble(self): eq = self.ndiffAssertEqual @@ -1217,7 +1219,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_none_preamble(self): @@ -1243,7 +1246,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_none_epilogue(self): @@ -1269,7 +1273,8 @@ MIME-Version: 1.0 Content-Transfer-Encoding: 7bit hello world ---BOUNDARY--''') +--BOUNDARY-- +''') def test_seq_parts_in_a_multipart_with_empty_epilogue(self):
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -42,6 +42,10 @@ Core and Builtins Library ------- +- Issue #14983: email.generator now always adds a line end after each MIME