Skip to content

Commit b222fb9

Browse files
[PR #10270/2a55afee backport][3.12] fix: include carriage return in multipartform.decode() (#10275)
**This is a backport of PR #10270 as merged into master (2a55afe).** Co-authored-by: James Ward <[email protected]>
1 parent 622d366 commit b222fb9

File tree

4 files changed

+5
-2
lines changed

4 files changed

+5
-2
lines changed

CHANGES/10270.bugfix.rst

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
``MultipartForm.decode()`` must follow RFC1341 7.2.1 with a ``CRLF`` after the boundary
2+
-- by :user:`imnotjames`.

CONTRIBUTORS.txt

+1
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ Jaesung Lee
168168
Jake Davis
169169
Jakob Ackermann
170170
Jakub Wilk
171+
James Ward
171172
Jan Buchar
172173
Jan Gosmann
173174
Jarno Elonen

aiohttp/multipart.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -979,7 +979,7 @@ def decode(self, encoding: str = "utf-8", errors: str = "strict") -> str:
979979
return "".join(
980980
"--"
981981
+ self.boundary
982-
+ "\n"
982+
+ "\r\n"
983983
+ part._binary_headers.decode(encoding, errors)
984984
+ part.decode()
985985
for part, _e, _te in self._parts

tests/test_web_response.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1209,7 +1209,7 @@ def read(self, size: int = -1) -> bytes:
12091209
(BodyPartReader("x", CIMultiDictProxy(CIMultiDict()), mock.Mock()), None),
12101210
(
12111211
mpwriter,
1212-
"--x\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 4\r\n\r\ntest",
1212+
"--x\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 4\r\n\r\ntest",
12131213
),
12141214
),
12151215
)

0 commit comments

Comments
 (0)