summaryrefslogtreecommitdiff
path: root/Lib/email/feedparser.py
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2015-01-25 23:30:30 -0500
committerBenjamin Peterson <benjamin@python.org>2015-01-25 23:30:30 -0500
commit155ceaa454ad9a623cade5ed326e6e1e70ce109d (patch)
treea670befde15514295bfa597d56d55fa9549dfa49 /Lib/email/feedparser.py
parent7e4b9057b3180ed1b7b26dc8f9a2d2162d4e83b0 (diff)
downloadcpython-git-155ceaa454ad9a623cade5ed326e6e1e70ce109d.tar.gz
handle headers with no key (closes #19996)
Patch by Cory Benfield.
Diffstat (limited to 'Lib/email/feedparser.py')
-rw-r--r--Lib/email/feedparser.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/Lib/email/feedparser.py b/Lib/email/feedparser.py
index 0c3b572684..c95b27f12f 100644
--- a/Lib/email/feedparser.py
+++ b/Lib/email/feedparser.py
@@ -33,7 +33,7 @@ NLCRE_eol = re.compile('(\r\n|\r|\n)\Z')
NLCRE_crack = re.compile('(\r\n|\r|\n)')
# RFC 2822 $3.6.8 Optional fields. ftext is %d33-57 / %d59-126, Any character
# except controls, SP, and ":".
-headerRE = re.compile(r'^(From |[\041-\071\073-\176]{1,}:|[\t ])')
+headerRE = re.compile(r'^(From |[\041-\071\073-\176]*:|[\t ])')
EMPTYSTRING = ''
NL = '\n'
@@ -511,6 +511,15 @@ class FeedParser:
# There will always be a colon, because if there wasn't the part of
# the parser that calls us would have started parsing the body.
i = line.find(':')
+
+ # If the colon is on the start of the line the header is clearly
+ # malformed, but we might be able to salvage the rest of the
+ # message. Track the error but keep going.
+ if i == 0:
+ defect = errors.InvalidHeaderDefect("Missing header name.")
+ self._cur.defects.append(defect)
+ continue
+
assert i>0, "_parse_headers fed line with no : and no leading WS"
lastheader = line[:i]
lastvalue = [line]