Commit graph

543 commits

Author SHA1 Message Date
R. David Murray
bdd2d93bfe Revert r88197. I'll refix correctly once there is a test. 2011-01-26 02:31:37 +00:00
Victor Stinner
3a7ee3ab5a Fix BytesGenerator._handle_text() if the message has no payload (None) 2011-01-26 00:39:19 +00:00
Victor Stinner
0c4cc559cb fix import in email.message_from_binary_file()
Parser => BytesParser
2011-01-25 23:15:47 +00:00
R. David Murray
389af00371 Merged revisions 87873 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87873 | r.david.murray | 2011-01-08 21:35:24 -0500 (Sat, 08 Jan 2011) | 12 lines

  #5871: protect against header injection attacks.

  This makes Header.encode throw a HeaderParseError if it winds up
  formatting a header such that a continuation line has no leading
  whitespace and looks like a header.  Since Header accepts values
  containing newlines and preserves them (and this is by design), without
  this fix any program that took user input (say, a subject in a web form)
  and passed it to the email package as a header was vulnerable to header
  injection attacks.  (As far as we know this has never been exploited.)

  Thanks to Jakub Wilk for reporting this vulnerability.
........
2011-01-09 02:48:04 +00:00
R. David Murray
5b2d9ddf69 #5871: protect against header injection attacks.
This makes Header.encode throw a HeaderParseError if it winds up
formatting a header such that a continuation line has no leading
whitespace and looks like a header.  Since Header accepts values
containing newlines and preserves them (and this is by design), without
this fix any program that took user input (say, a subject in a web form)
and passed it to the email package as a header was vulnerable to header
injection attacks.  (As far as we know this has never been exploited.)

Thanks to Jakub Wilk for reporting this vulnerability.
2011-01-09 02:35:24 +00:00
R. David Murray
9253214fd9 #10686: recode non-ASCII headers to 'unknown-8bit' instead of ?s.
This applies only when generating strings from non-RFC compliant binary
input; it makes the existing recoding behavior more consistent (ie:
now no data is lost when recoding).
2011-01-07 23:25:30 +00:00
R. David Murray
6f0022d84a Fix formatting of values with embedded newlines when rfc2047 encoding
Before this patch if a value being encoded had an embedded newline,
the line following the newline would have no leading whitespace,
and the whitespace it did have was encoded into the word.  Now
the existing whitespace gets turned into a blank, the way it does
in other header reformatting, and the _continuation_ws gets added
at the beginning of the encoded line.
2011-01-07 21:57:25 +00:00
Georg Brandl
e98628d60c Remove doc for nonexisting parameter. 2011-01-06 09:15:45 +00:00
R. David Murray
f9844c8292 Merged revisions 87750 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87750 | r.david.murray | 2011-01-04 20:39:32 -0500 (Tue, 04 Jan 2011) | 5 lines

  #10790: make append work when output codec is different from input codec

  There's still a bug here (the encode call shouldn't use the 'errors'
  paramter), but I'll fix that later.
........
2011-01-05 01:47:38 +00:00
R. David Murray
477efb3944 #10790: make append work when output codec is different from input codec
There's still a bug here (the encode call shouldn't use the 'errors'
paramter), but I'll fix that later.
2011-01-05 01:39:32 +00:00
R. David Murray
5723d225f8 Merged revisions 87567 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87567 | r.david.murray | 2010-12-29 11:57:24 -0500 (Wed, 29 Dec 2010) | 2 lines

  Fix a comment typo and update another comment to match Python3 reality
........
2010-12-29 19:03:53 +00:00
R. David Murray
4c1da4c2a8 Fix a comment typo and update another comment to match Python3 reality 2010-12-29 16:57:24 +00:00
R. David Murray
dfd7eb0ba2 #1693546: don't add quotes around RFC 2231 encoded values.
The RFC is bit hard to understand on this point, but the examples
clearly show that parameter values that are encoded according
to its charset/language rules don't have surrounding quotes, and
the ABNF does not allow for quotes.  So when we produce such
encoded values, we no longer add quotes.
2010-12-24 22:36:49 +00:00
R. David Murray
4a62e89728 #1155362: allow hh:mm:ss-uuuu like we allow hh:mm:ss+uuuu in parsedate_tz
Original patch by Thomas Herve.
2010-12-23 20:35:46 +00:00
R. David Murray
27c1914c1b Merged revisions 87415 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87415 | r.david.murray | 2010-12-21 13:07:59 -0500 (Tue, 21 Dec 2010) | 4 lines

  Fix the change made for issue 1243654.

  Surprisingly, it turns out there was no test that exercised this code path.
........
2010-12-21 18:11:01 +00:00
R. David Murray
73a559d0c9 Fix the change made for issue 1243654.
Surprisingly, it turns out there was no test that exercised this code path.
2010-12-21 18:07:59 +00:00
R. David Murray
63563cdf9d #9286: Fix the rfc822 parser to preserve whitespace in address local part.
Such addresses are not RFC compliant except under the 'obsolete syntax'
rules, but before this fix the whitespace was dropped from the input,
concatenating the pieces.  That breaks one of the principles of the
email package, that of preserving the input as much as possible.
It also denies the application program the opportunity to apply its
own heuristics to interpretation of such non-compliant addresses.

It is possible users of the email package were depending on the local
part always being a single token, so this fix will not be backported.
2010-12-18 18:25:38 +00:00
R. David Murray
ccb9d05b6c Merged revisions 87217 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87217 | r.david.murray | 2010-12-13 18:51:19 -0500 (Mon, 13 Dec 2010) | 5 lines

  #1078919: make add_header automatically do RFC2231 encoding when needed.

  Also document the use of three-tuples if control of the charset
  and language is desired.
........
2010-12-13 23:57:01 +00:00
R. David Murray
7ec754b7da #1078919: make add_header automatically do RFC2231 encoding when needed.
Also document the use of three-tuples if control of the charset
and language is desired.
2010-12-13 23:51:19 +00:00
R. David Murray
0101a3a827 Merged revisions 87191 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r87191 | r.david.murray | 2010-12-12 15:06:19 -0500 (Sun, 12 Dec 2010) | 6 lines

  #243654: only create a new MIME boundary if we don't already have one.

  The rearranged code should do exactly what the old code did, but
  the new code avoids a potentially costly re computation in the case
  where a boundary already exists.
........
2010-12-12 20:28:13 +00:00
R. David Murray
5260a9bbdc #243654: only create a new MIME boundary if we don't already have one.
The rearranged code should do exactly what the old code did, but
the new code avoids a potentially costly re computation in the case
where a boundary already exists.
2010-12-12 20:06:19 +00:00
R. David Murray
abb10753c5 Merged revisions 85146 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85146 | r.david.murray | 2010-10-01 16:38:33 -0400 (Fri, 01 Oct 2010) | 3 lines

  Fix docstring typo.
........
2010-12-06 18:48:11 +00:00
R. David Murray
c1b3ed522c Merged revisions 85130 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85130 | r.david.murray | 2010-09-30 22:08:02 -0400 (Thu, 30 Sep 2010) | 2 lines

  Fix a couple spelling errors in comments and delete redundant __len__ def.
........
2010-12-06 18:39:32 +00:00
R. David Murray
a0b44b5adb #8989: add 'domain' keyword to make_msgid.
Patch by Adrian von Bidder.
2010-12-02 21:47:19 +00:00
R. David Murray
719a449ba6 Fix TestBytesGeneratorIdempotent tests and a couple bugs they revealed.
The tests that were failing on (some) windows machines, where the
msg_XX.txt files used native \r\n lineseps are now also run on machines
that use \n natively, and conversely the \n tests are run on Windows.
The failing tests revealed one place where linesep needed to be added
to a flatten call in generator.  There was also another that the tests
didn't catch, so I added a test for that case as well.
2010-11-21 16:53:48 +00:00
Ezio Melotti
19f2aeba67 Merged revisions 86596 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r86596 | ezio.melotti | 2010-11-20 21:04:17 +0200 (Sat, 20 Nov 2010) | 1 line

  #9424: Replace deprecated assert* methods in the Python test suite.
........
2010-11-21 01:30:29 +00:00
Ezio Melotti
b3aedd4862 #9424: Replace deprecated assert* methods in the Python test suite. 2010-11-20 19:04:17 +00:00
R. David Murray
e5db2636f3 Improve TestBytesGeneratorIdempotent using by using linesep.
Also corrects a typo from a previous commit.  Unfortunately
this does *not* fix issue #10134.
2010-11-20 15:10:13 +00:00
Brett Cannon
384917a922 Properly close files used by test_email. 2010-10-29 23:08:36 +00:00
Brett Cannon
06407b35b1 Properly close a temporary TextIOWrapper in 'email'. 2010-10-29 23:08:13 +00:00
R. David Murray
8451c4b6e0 #1349106: add linesep argument to generator.flatten and header.encode. 2010-10-23 22:19:56 +00:00
R. David Murray
96fd54eaec #4661: add bytes parsing and generation to email (email version bump to 5.1.0)
The work on this is not 100% complete, but everything is present to
allow real-world testing of the code.  The only remaining major todo
item is to (hopefully!) enhance the handling of non-ASCII bytes in headers
converted to unicode by RFC2047 encoding them rather than replacing them with
'?'s.
2010-10-08 15:55:28 +00:00
R. David Murray
7f8199a997 Merged revisions 85179 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85179 | r.david.murray | 2010-10-02 11:58:26 -0400 (Sat, 02 Oct 2010) | 6 lines

  #1050268: make parseaddr 'quote' the contents of quoted strings in addresses.

  Also made the doc string for email._parseaddr's 'quote' function more
  accurate; I'd love to make the function match the old docstring instead,
  but other code uses it according the existing semantics.
........
2010-10-02 16:04:44 +00:00
R. David Murray
5397e862e2 #1050268: make parseaddr 'quote' the contents of quoted strings in addresses.
Also made the doc string for email._parseaddr's 'quote' function more
accurate; I'd love to make the function match the old docstring instead,
but other code uses it according the existing semantics.
2010-10-02 15:58:26 +00:00
R. David Murray
70a9993bfd Fix docstring typo. 2010-10-01 20:38:33 +00:00
R. David Murray
f9c957f2c6 Merged revisions 85142 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r85142 | r.david.murray | 2010-10-01 11:40:20 -0400 (Fri, 01 Oct 2010) | 5 lines

  #10004: in Q encoded word ignore '=xx' when xx is not valid hex.

  Bug report and fix by Thomas Guettler.
........
2010-10-01 15:45:48 +00:00
R. David Murray
31e984c39c #10004: in Q encoded word ignore '=xx' when xx is not valid hex.
Bug report and fix by Thomas Guettler.
2010-10-01 15:40:20 +00:00
R. David Murray
d2c310f0b7 Fix a couple spelling errors in comments and delete redundant __len__ def. 2010-10-01 02:08:02 +00:00
R. David Murray
1061f18beb Merged revisions 84310 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r84310 | r.david.murray | 2010-08-24 20:45:55 -0400 (Tue, 24 Aug 2010) | 8 lines

  #1194222: make parsedate always return RFC2822 four character years.

  Two character years are now converted to four character years using
  the Posix standard rule (<68 == 2000, >=68==1900).  This makes the
  parsed date RFC2822 compliant even if the input is not.

  Patch and test by Jeffrey Finkelstein.
........
2010-08-25 01:55:24 +00:00
R. David Murray
219d1c8ae3 #1194222: make parsedate always return RFC2822 four character years.
Two character years are now converted to four character years using
the Posix standard rule (<68 == 2000, >=68==1900).  This makes the
parsed date RFC2822 compliant even if the input is not.

Patch and test by Jeffrey Finkelstein.
2010-08-25 00:45:55 +00:00
R. David Murray
e06528c64b Merged revisions 83690 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r83690 | r.david.murray | 2010-08-03 18:14:10 -0400 (Tue, 03 Aug 2010) | 10 lines

  #3196: if needed pad a short base64 encoded word before trying to decode.

  The RFCs encourage following Postel's law: be liberal in what you accept.
  So if someone forgot to pad the base64 encoded word payload to an
  even four bytes, we add the padding before handing it to base64mime.decode.
  Previously, missing padding resulted in a HeaderParseError.

  Patch by Jason Williams.
........
2010-08-03 23:35:44 +00:00
R. David Murray
c4e69cc1d8 #3196: if needed pad a short base64 encoded word before trying to decode.
The RFCs encourage following Postel's law: be liberal in what you accept.
So if someone forgot to pad the base64 encoded word payload to an
even four bytes, we add the padding before handing it to base64mime.decode.
Previously, missing padding resulted in a HeaderParseError.

Patch by Jason Williams.
2010-08-03 22:14:10 +00:00
Florent Xicluna
f1046ca817 Issue #4770: Restrict binascii module to accept only bytes (as specified).
And fix the email package to encode to ASCII instead of ``raw-unicode-escape`` before ASCII-to-binary decoding.
2010-07-27 21:20:15 +00:00
R. David Murray
6d4a06c91e Merged revisions 82922 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r82922 | r.david.murray | 2010-07-16 21:19:57 -0400 (Fri, 16 Jul 2010) | 4 lines

  #1555570: correctly handle a \r\n that is split by the read buffer.

  Patch and test by Tony Nelson.
........
2010-07-17 01:28:04 +00:00
R. David Murray
45bf773f60 #1555570: correctly handle a \r\n that is split by the read buffer.
Patch and test by Tony Nelson.
2010-07-17 01:19:57 +00:00
R. David Murray
71df9d9216 Merged revisions 82011 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r82011 | r.david.murray | 2010-06-15 22:19:40 -0400 (Tue, 15 Jun 2010) | 17 lines

  Merged revisions 81675 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r81675 | r.david.murray | 2010-06-03 11:43:20 -0400 (Thu, 03 Jun 2010) | 10 lines

    #5610: use \Z not $ so we don't eat extra chars when body part ends with \r\n.

    If a body part ended with \r\n, feedparser, using '$' to terminate its
    search for the newline, would match on the \r\n, and think that it needed
    to strip two characters in order to account for the line end before the
    boundary.  That made it chop one too many characters off the end of
    the body part.  Using \Z makes the match correct.

    Patch and test by Tony Nelson.
  ........
................
2010-06-16 02:22:56 +00:00
R. David Murray
45e0e1444b Merged revisions 81675 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81675 | r.david.murray | 2010-06-03 11:43:20 -0400 (Thu, 03 Jun 2010) | 10 lines

  #5610: use \Z not $ so we don't eat extra chars when body part ends with \r\n.

  If a body part ended with \r\n, feedparser, using '$' to terminate its
  search for the newline, would match on the \r\n, and think that it needed
  to strip two characters in order to account for the line end before the
  boundary.  That made it chop one too many characters off the end of
  the body part.  Using \Z makes the match correct.

  Patch and test by Tony Nelson.
........
2010-06-16 02:19:40 +00:00
R. David Murray
99147c40b5 Merged revisions 81685 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

........
  r81685 | r.david.murray | 2010-06-04 12:11:08 -0400 (Fri, 04 Jun 2010) | 4 lines

  #4768: store base64 encoded email body parts as text, not binary.

  Patch and tests by Forest Bond.
........
2010-06-04 16:15:34 +00:00
R. David Murray
7da8f06df0 #4768: store base64 encoded email body parts as text, not binary.
Patch and tests by Forest Bond.
2010-06-04 16:11:08 +00:00
R. David Murray
d2d08c6872 Merged revisions 81660 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k

................
  r81660 | r.david.murray | 2010-06-02 21:58:28 -0400 (Wed, 02 Jun 2010) | 25 lines

  Fix Charset.body_encode to encode to output_charset before calling base64mime.

  This means that what gets encoded in base64 is the encoded version of the
  unicode payload.  This bug was revealed by a forward port of the tests from
  Issue 1368247, but the fix was completely different.

  Note that the merge is only of the tests, the doc changes were inappropriate
  since email5 expects unicode, not bytes.  I'm also not convinced that
  quopri works correctly in email5, but that's a different issue.

  Merged revisions 81658 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk

  ........
    r81658 | r.david.murray | 2010-06-02 18:03:15 -0400 (Wed, 02 Jun 2010) | 9 lines

    #1368247: make set_charset/MIMEText automatically encode unicode _payload.

    Fixes (mysterious, to the end user) UnicodeErrors when using utf-8 as
    the charset and unicode as the _text argument.  Also makes the way in
    which unicode gets encoded to quoted printable for other charsets more
    sane (it only worked by accident previously).  The _payload now is encoded
    to the charset.output_charset if it is unicode.
  ........
................
2010-06-03 02:05:47 +00:00