﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
15018	LimitedStream.readline deals parameter not correct	xjdrew	nobody	"I read the code at (http://code.djangoproject.com/browser/django/trunk/django/core/handlers/wsgi.py), LimitedStream.readline function maybe go wrong when the situation meet criteria below:
 1. '\n' not in self.buffer
 2. and size is not None
 3. and len(self.buffer) > len(self.buffer)
it will go to ln102, and leads the parameter of LimitedStream._read_limited is negative， and it will be bypassed to ln82.
I don't read the implementation of self.stream.read, so i'm not sure if it will cause damage.
Please tell me if I misunderstand the code, thanks.

below is the code:
{{{
98	    def readline(self, size=None):
99	        while '\n' not in self.buffer or \
100	              (size is not None and len(self.buffer) < size):
101	            if size:
102	                chunk = self._read_limited(size - len(self.buffer))
103	            else:
104	                chunk = self._read_limited()
105	            if not chunk:
106	                break
107	            self.buffer += chunk
108	        sio = StringIO(self.buffer)
109	        if size:
110	            line = sio.readline(size)
111	        else:
112	            line = sio.readline()
113	        self.buffer = sio.read()
114	        return line
}}}


{{{
77	    def _read_limited(self, size=None):
78	        if size is None or size > self.remaining:
79	            size = self.remaining
80	        if size == 0:
81	            return ''
82	        result = self.stream.read(size)
83	        self.remaining -= len(result)
84	        return result
}}}


best regards,
Drew"		closed	Uncategorized	dev		worksforme			Unreviewed	0	0	0	0	0	0
