From f67e98fd789fa8b4038250d28e32d1a51495ba92 Mon Sep 17 00:00:00 2001 From: JSap0914 <116227558+JSap0914@users.noreply.github.com> Date: Wed, 8 Jul 2026 09:13:06 +0900 Subject: [PATCH] Fix parse_mimetype producing spurious empty-key parameter for whitespace-only segments after semicolons (#13010) (cherry picked from commit 9e00085c958fbcd40de37867e773bf7cd3bbee0c) --- aiohttp/helpers.py | 2 +- tests/test_helpers.py | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/aiohttp/helpers.py b/aiohttp/helpers.py index 486b4976cac..fbdd6653fd0 100644 --- a/aiohttp/helpers.py +++ b/aiohttp/helpers.py @@ -373,7 +373,7 @@ def parse_mimetype(mimetype: str) -> MimeType: parts = mimetype.split(";") params: MultiDict[str] = MultiDict() for item in parts[1:]: - if not item: + if not item.strip(): continue key, _, value = item.partition("=") params.add(key.lower().strip(), value.strip(' "')) diff --git a/tests/test_helpers.py b/tests/test_helpers.py index 9c1193a7a87..197cbfaf61c 100644 --- a/tests/test_helpers.py +++ b/tests/test_helpers.py @@ -60,6 +60,27 @@ "text/plain;base64", helpers.MimeType("text", "plain", "", MultiDict({"base64": ""})), ), + ( + "text/html; ", + helpers.MimeType("text", "html", "", MultiDictProxy(MultiDict())), + ), + ( + "text/html; ", + helpers.MimeType("text", "html", "", MultiDictProxy(MultiDict())), + ), + ( + "text/html;\t", + helpers.MimeType("text", "html", "", MultiDictProxy(MultiDict())), + ), + ( + "text/html; charset=utf-8; ", + helpers.MimeType( + "text", + "html", + "", + MultiDictProxy(MultiDict({"charset": "utf-8"})), + ), + ), ], ) def test_parse_mimetype(mimetype, expected) -> None: