summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2004-05-11 22:23:59 (GMT)
committerBarry Warsaw <barry@python.org>2004-05-11 22:23:59 (GMT)
commit486cb0ac2ac3cf93770a469a37975e9bd32d8ccf (patch)
treecc20fc1b471c03d5c9937f04c4ad04a5d00e66b4
parentb067e6287b9c72fda50d2d1c350fc72a2c059b44 (diff)
downloadcpython-486cb0ac2ac3cf93770a469a37975e9bd32d8ccf.zip
cpython-486cb0ac2ac3cf93770a469a37975e9bd32d8ccf.tar.gz
cpython-486cb0ac2ac3cf93770a469a37975e9bd32d8ccf.tar.bz2
Tests for message/external-body and for duplicate boundary lines.
-rw-r--r--Lib/email/FeedParser.py15
1 files changed, 12 insertions, 3 deletions
diff --git a/Lib/email/FeedParser.py b/Lib/email/FeedParser.py
index d28170e..294a6a5 100644
--- a/Lib/email/FeedParser.py
+++ b/Lib/email/FeedParser.py
@@ -306,9 +306,18 @@ class FeedParser:
capturing_preamble = False
self._input.unreadline(line)
continue
- # We saw a boundary separating two parts. Recurse to
- # parse this subpart; the input stream points at the
- # subpart's first line.
+ # We saw a boundary separating two parts. Consume any
+ # multiple boundary lines that may be following. Our
+ # interpretation of RFC 2046 BNF grammar does not produce
+ # body parts within such double boundaries.
+ while True:
+ line = self._input.readline()
+ mo = boundaryre.match(line)
+ if not mo:
+ self._input.unreadline(line)
+ break
+ # Recurse to parse this subpart; the input stream points
+ # at the subpart's first line.
self._input.push_eof_matcher(boundaryre.match)
for retval in self._parsegen():
if retval is NeedMoreData: