From f6b73d8c8c488e25c726fd4e57b8cf72a61cccf1 Mon Sep 17 00:00:00 2001 From: Fredrik Tolf Date: Sat, 18 Feb 2023 23:17:25 +0100 Subject: [PATCH] Parse POST form-data better. --- wrw/form.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/wrw/form.py b/wrw/form.py index f821ea1..902d759 100644 --- a/wrw/form.py +++ b/wrw/form.py @@ -6,14 +6,15 @@ __all__ = ["formdata"] def formparse(req): buf = {} buf.update(urllib.parse.parse_qsl(req.query, keep_blank_values=True)) - if req.ihead.get("Content-Type") == "application/x-www-form-urlencoded": + ctype, ctpars = proto.pmimehead(req.ihead.get("Content-Type", "")) + if ctype == "application/x-www-form-urlencoded": try: rbody = req.input.read(2 ** 20) except IOError as exc: return exc if len(rbody) >= 2 ** 20: return ValueError("x-www-form-urlencoded data is absurdly long") - buf.update(urllib.parse.parse_qsl(rbody.decode("latin1"), keep_blank_values=True)) + buf.update(urllib.parse.parse_qsl(rbody.decode("latin1"), encoding=ctparse.get("charset", "utf-8"), keep_blank_values=True)) return buf class badmultipart(IOError): -- 2.11.0