This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2013年01月09日 10:28 by sanyi, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Messages (3) | |||
|---|---|---|---|
| msg179429 - (view) | Author: Attila Gerendi (sanyi) | Date: 2013年01月09日 10:28 | |
In http.client.HTTPConnection's send(data) method if data has attribute read after is handled correctly as file-like object and sent out successfully the code continues to what should be an else branch (~line 858) and tries to send out again the data. This is harmless in most situations but only by chance and also run's unnecessary code. I propose either to use an else branch for the code after line 858 or simply instead break return at line 853. Cheers, Sanyi |
|||
| msg181017 - (view) | Author: Attila Gerendi (sanyi) | Date: 2013年01月31日 13:03 | |
Renamed the report since it's unsafe for sure.
This problem was previously called: Avoid unnecessary and possibly unsafe code from http.client.HTTPConnection.send.
Imagine that the data parameter from HTTPConnection it's a file like object but it's not iterable, maybe some custom data wrapper.
the if hasattr(data, "read"): True branch will correctly send out the response then unnecessary continue to:
try:
self.sock.sendall(data)
except TypeError:
if isinstance(data, collections.Iterable):
for d in data:
self.sock.sendall(d)
else:
raise TypeError("data should be a bytes-like object "
"or an iterable, got %r" % type(data))
and crash!
|
|||
| msg201458 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2013年10月27日 13:43 | |
Seems this bug was fixed in issue16658. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:40 | admin | set | github: 61108 |
| 2013年10月27日 13:43:41 | serhiy.storchaka | set | status: open -> closed superseder: Missing "return" in HTTPConnection.send() nosy: + serhiy.storchaka messages: + msg201458 type: crash -> behavior resolution: remind -> duplicate stage: resolved |
| 2013年01月31日 13:03:23 | sanyi | set | type: performance -> crash resolution: remind messages: + msg181017 title: Avoid unnecessary and possibly unsafe code from http.client.HTTPConnection.send -> http.client.HTTPConnection.send double send data |
| 2013年01月09日 17:13:12 | orsenthil | set | nosy:
+ orsenthil |
| 2013年01月09日 10:28:27 | sanyi | create | |