bpo-41056: Fix a NULL pointer dereference on MemoryError within the ssl module. (GH-21009)
Detected by Coverity.
This commit is contained in:
parent
314858e276
commit
eb0d5c38de
|
@ -0,0 +1 @@
|
||||||
|
Fix a NULL pointer dereference within the ssl module during a MemoryError in the keylog callback. (discovered by Coverity)
|
|
@ -125,6 +125,12 @@ _PySSL_keylog_callback(const SSL *ssl, const char *line)
|
||||||
|
|
||||||
threadstate = PyGILState_Ensure();
|
threadstate = PyGILState_Ensure();
|
||||||
|
|
||||||
|
ssl_obj = (PySSLSocket *)SSL_get_app_data(ssl);
|
||||||
|
assert(PySSLSocket_Check(ssl_obj));
|
||||||
|
if (ssl_obj->ctx->keylog_bio == NULL) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Allocate a static lock to synchronize writes to keylog file.
|
/* Allocate a static lock to synchronize writes to keylog file.
|
||||||
* The lock is neither released on exit nor on fork(). The lock is
|
* The lock is neither released on exit nor on fork(). The lock is
|
||||||
* also shared between all SSLContexts although contexts may write to
|
* also shared between all SSLContexts although contexts may write to
|
||||||
|
@ -141,12 +147,6 @@ _PySSL_keylog_callback(const SSL *ssl, const char *line)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ssl_obj = (PySSLSocket *)SSL_get_app_data(ssl);
|
|
||||||
assert(PySSLSocket_Check(ssl_obj));
|
|
||||||
if (ssl_obj->ctx->keylog_bio == NULL) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
PySSL_BEGIN_ALLOW_THREADS
|
PySSL_BEGIN_ALLOW_THREADS
|
||||||
PyThread_acquire_lock(lock, 1);
|
PyThread_acquire_lock(lock, 1);
|
||||||
res = BIO_printf(ssl_obj->ctx->keylog_bio, "%s\n", line);
|
res = BIO_printf(ssl_obj->ctx->keylog_bio, "%s\n", line);
|
||||||
|
|
Loading…
Reference in New Issue