summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2024-03-28 10:11:58 (GMT)
committerGitHub <noreply@github.com>2024-03-28 10:11:58 (GMT)
commit8cb7d7ff86a1a2d41195f01ba4f218941dd7308c (patch)
treefac4bef6e11a06bca84406bc22a90915844bff2f
parent6c8ac8a32fd6de1960526561c44bc5603fab0f3e (diff)
downloadcpython-8cb7d7ff86a1a2d41195f01ba4f218941dd7308c.zip
cpython-8cb7d7ff86a1a2d41195f01ba4f218941dd7308c.tar.gz
cpython-8cb7d7ff86a1a2d41195f01ba4f218941dd7308c.tar.bz2
gh-117310: Remove extra DECREF on "no ciphers" error path in `_ssl._SSLContext` constructor (#117309)
Remove extra self DECREF on ssl "no ciphers" error path. This doesn't come up in practice because nobody links against a broken OpenSSL library that provides nothing.
-rw-r--r--Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst4
-rw-r--r--Modules/_ssl.c1
2 files changed, 4 insertions, 1 deletions
diff --git a/Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst b/Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst
new file mode 100644
index 0000000..429b890b
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-03-27-21-05-52.gh-issue-117310.Bt2wox.rst
@@ -0,0 +1,4 @@
+Fixed an unlikely early & extra ``Py_DECREF`` triggered crash in :mod:`ssl`
+when creating a new ``_ssl._SSLContext`` if CPython was built implausibly such
+that the default cipher list is empty **or** the SSL library it was linked
+against reports a failure from its C ``SSL_CTX_set_cipher_list()`` API.
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index f5a79dc..fbf914c 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -3166,7 +3166,6 @@ _ssl__SSLContext_impl(PyTypeObject *type, int proto_version)
result = SSL_CTX_set_cipher_list(ctx, "HIGH:!aNULL:!eNULL");
}
if (result == 0) {
- Py_DECREF(self);
ERR_clear_error();
PyErr_SetString(get_state_ctx(self)->PySSLErrorObject,
"No cipher can be selected.");