From c7bfe0e42eb72d941a8a131e870aefabd4547015 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Mon, 17 Jun 2013 16:34:41 +0300 Subject: Issue #18167: cgi.FieldStorage no more fails to handle multipart/form-data when \r\n appears at end of 65535 bytes without other newlines. --- Lib/cgi.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'Lib/cgi.py') diff --git a/Lib/cgi.py b/Lib/cgi.py index 96b1f5721d..caa47f8012 100755 --- a/Lib/cgi.py +++ b/Lib/cgi.py @@ -786,6 +786,9 @@ class FieldStorage: if not line: self.done = -1 break + if delim == b"\r": + line = delim + line + delim = b"" if line.startswith(b"--") and last_line_lfend: strippedline = line.rstrip() if strippedline == next_boundary: @@ -802,6 +805,12 @@ class FieldStorage: delim = b"\n" line = line[:-1] last_line_lfend = True + elif line.endswith(b"\r"): + # We may interrupt \r\n sequences if they span the 2**16 + # byte boundary + delim = b"\r" + line = line[:-1] + last_line_lfend = False else: delim = b"" last_line_lfend = False -- cgit v1.2.1