X-Git-Url: http://git.dolda2000.com/gitweb/?a=blobdiff_plain;f=wrw%2Fform.py;h=7f4930dfd944b26bd4677eb17ecec725fe21cce2;hb=1d2999321bd5fd204905b86936fb3dc13b07d574;hp=7184635d15aeeeec3a93b24e1efc3141f09daf46;hpb=8a7ba0dcff7734cce7328e487c1ab38712b84168;p=wrw.git diff --git a/wrw/form.py b/wrw/form.py index 7184635..7f4930d 100644 --- a/wrw/form.py +++ b/wrw/form.py @@ -7,10 +7,10 @@ def formparse(req): buf = {} buf.update(urllib.parse.parse_qsl(req.query)) if req.ihead.get("Content-Type") == "application/x-www-form-urlencoded": - if req.input.limit > 2 ** 20: + rbody = req.input.read(2 ** 20) + if len(rbody) >= 2 ** 20: raise ValueError("x-www-form-urlencoded data is absurdly long") - rbody = req.input.read() - buf.update(urllib.parse.parse_qsl(rbody)) + buf.update(urllib.parse.parse_qsl(rbody.decode("latin1"))) return buf class badmultipart(Exception): @@ -50,7 +50,7 @@ class formpart(object): break while len(self.form.buf) <= len(lboundary): ret = req.input.read(8192) - if ret == "": + if ret == b"": raise badmultipart("Missing last multipart boundary") self.form.buf += ret @@ -61,7 +61,7 @@ class formpart(object): self.buf = self.buf[limit:] else: ret = self.buf - self.buf = "" + self.buf = b"" return ret def readline(self, limit=-1): @@ -71,7 +71,7 @@ class formpart(object): if p < 0: if self.eof: ret = self.buf - self.buf = "" + self.buf = b"" return ret last = len(self.buf) self.fillbuf(last + 128)