Skip to content

Commit 37abf1e

Browse files
committed
Keep header limit changes focused
1 parent 86ebb16 commit 37abf1e

File tree

2 files changed

+4
-14
lines changed

2 files changed

+4
-14
lines changed

python_multipart/multipart.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1062,14 +1062,11 @@ def _internal_write(self, data: bytes, length: int) -> int:
10621062
# Our index defaults to 0.
10631063
i = 0
10641064

1065-
def raise_parse_error(msg: str, offset: int) -> None:
1066-
raise MultipartParseError(msg, offset=offset)
1067-
10681065
def advance_header_size(amount: int = 1) -> None:
10691066
nonlocal current_header_size
10701067
current_header_size += amount
10711068
if current_header_size > self.max_header_size:
1072-
raise_parse_error("Maximum header size exceeded", i)
1069+
raise MultipartParseError("Maximum header size exceeded", offset=i)
10731070

10741071
# Set a mark.
10751072
def set_mark(name: str) -> None:
@@ -1195,7 +1192,7 @@ def data_callback(name: CallbackName, end_i: int, remaining: bool = False) -> No
11951192
if c != CR:
11961193
current_header_count += 1
11971194
if current_header_count > self.max_header_count:
1198-
raise_parse_error("Maximum header count exceeded", i)
1195+
raise MultipartParseError("Maximum header count exceeded", offset=i)
11991196
current_header_size = 0
12001197

12011198
# Set a mark of our header field.

tests/test_multipart.py

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1184,20 +1184,13 @@ def test_bad_start_boundary(self) -> None:
11841184

11851185
def test_multipart_header_count_limit(self) -> None:
11861186
self.make("poc")
1187-
payload = (
1188-
b'--poc\r\nContent-Disposition: form-data; name="x"\r\n'
1189-
+ (b"X-A: 1\r\n" * 8)
1190-
)
1187+
payload = b'--poc\r\nContent-Disposition: form-data; name="x"\r\n' + (b"X-A: 1\r\n" * 8)
11911188
with self.assertRaisesRegex(MultipartParseError, "Maximum header count exceeded"):
11921189
self.f.write(payload)
11931190

11941191
def test_multipart_header_size_limit(self) -> None:
11951192
self.make("poc")
1196-
payload = (
1197-
b'--poc\r\nContent-Disposition: form-data; name="x"\r\n'
1198-
+ b"X-A: "
1199-
+ (b"a" * (4096 + 124))
1200-
)
1193+
payload = b'--poc\r\nContent-Disposition: form-data; name="x"\r\n' + b"X-A: " + (b"a" * (4096 + 124))
12011194
with self.assertRaisesRegex(MultipartParseError, "Maximum header size exceeded"):
12021195
self.f.write(payload)
12031196

0 commit comments

Comments
 (0)