summaryrefslogtreecommitdiffstats
path: root/Modules/_ssl.c
diff options
context:
space:
mode:
authorNeal Norwitz <nnorwitz@gmail.com>2003-06-30 03:25:20 (GMT)
committerNeal Norwitz <nnorwitz@gmail.com>2003-06-30 03:25:20 (GMT)
commita9002f824bdca26700a9a6e7b7e6b36a9482e345 (patch)
tree4e8f7fac0afb3e32db43fba58d3e52d9c3b99e0c /Modules/_ssl.c
parentb346096b656aa23e38edc88de60c3b6dbbaef898 (diff)
downloadcpython-a9002f824bdca26700a9a6e7b7e6b36a9482e345.zip
cpython-a9002f824bdca26700a9a6e7b7e6b36a9482e345.tar.gz
cpython-a9002f824bdca26700a9a6e7b7e6b36a9482e345.tar.bz2
Fix SF #754870, SSL crash interpreter when remote side closes during connect
Also fix a memory leak.
Diffstat (limited to 'Modules/_ssl.c')
-rw-r--r--Modules/_ssl.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index 16edadd..27c3297 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -110,7 +110,7 @@ PySSL_SetError(PySSLObject *obj, int ret)
{
unsigned long e = ERR_get_error();
if (e == 0) {
- if (ret == 0) {
+ if (ret == 0 || !obj->Socket) {
p = PY_SSL_ERROR_EOF;
errstr = "EOF occurred in violation of protocol";
} else if (ret == -1) {
@@ -432,6 +432,7 @@ static PyObject *PySSL_SSLread(PySSLObject *self, PyObject *args)
timedout = wait_for_timeout(self->Socket, 0);
if (timedout) {
PyErr_SetString(PySSLErrorObject, "The read operation timed out");
+ Py_DECREF(buf);
return NULL;
}
do {