From 486cb0ac2ac3cf93770a469a37975e9bd32d8ccf Mon Sep 17 00:00:00 2001
From: Barry Warsaw <barry@python.org>
Date: Tue, 11 May 2004 22:23:59 +0000
Subject: Tests for message/external-body and for duplicate boundary lines.

---
 Lib/email/FeedParser.py | 15 ++++++++++++---
 1 file 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:
-- 
cgit v0.12

