Commit ec4b5450 authored by Jeremy Hylton's avatar Jeremy Hylton

In newSSLObject(), initialize the various members of an SSLObject to NULL.

In SSL_dealloc(), free/dealloc them only if they're non-NULL.

Fixes some obvious core dumps, but not sure yet if there are more
semantics to the SSL calls that would affect the dealloc.
parent ab006457
...@@ -2507,6 +2507,10 @@ newSSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file) ...@@ -2507,6 +2507,10 @@ newSSLObject(PySocketSockObject *Sock, char *key_file, char *cert_file)
} }
memset(self->server, '\0', sizeof(char) * 256); memset(self->server, '\0', sizeof(char) * 256);
memset(self->issuer, '\0', sizeof(char) * 256); memset(self->issuer, '\0', sizeof(char) * 256);
self->server_cert = NULL;
self->ssl = NULL;
self->ctx = NULL;
self->Socket = NULL;
self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */ self->ctx = SSL_CTX_new(SSLv23_method()); /* Set up context */
if (self->ctx == NULL) { if (self->ctx == NULL) {
...@@ -2618,7 +2622,9 @@ static void SSL_dealloc(SSLObject *self) ...@@ -2618,7 +2622,9 @@ static void SSL_dealloc(SSLObject *self)
{ {
if (self->server_cert) /* Possible not to have one? */ if (self->server_cert) /* Possible not to have one? */
X509_free (self->server_cert); X509_free (self->server_cert);
if (self->ssl)
SSL_free(self->ssl); SSL_free(self->ssl);
if (self->ctx)
SSL_CTX_free(self->ctx); SSL_CTX_free(self->ctx);
Py_XDECREF(self->Socket); Py_XDECREF(self->Socket);
PyObject_Del(self); PyObject_Del(self);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment