https://github.com/python/cpython/commit/5ebd4860d3746eaeb890c947799508e1ed4936fe
commit: 5ebd4860d3746eaeb890c947799508e1ed4936fe
branch: main
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-08-21T09:35:55+03:00
summary:
gh-156099: Fix a crash when deleting SSLContext.keylog_filename (GH-156103)
The setter did not check the value for NULL and passed it to Py_fopen().
files:
A Misc/NEWS.d/next/Library/2026-08-20-12-00-00.gh-issue-156099.Kp4vRt.rst
M Lib/test/test_ssl.py
M Modules/_ssl/debughelpers.c
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 2bba665d19343e6..14e4620669491f2 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -5518,6 +5518,12 @@ def test_keylog_defaults(self):
with self.assertRaises(TypeError):
ctx.keylog_filename = 1
+ ctx.keylog_filename = os_helper.TESTFN
+ with self.assertRaisesRegex(AttributeError, 'cannot be deleted'):
+ del ctx.keylog_filename
+ # a failed deletion does not change the value
+ self.assertEqual(ctx.keylog_filename, os_helper.TESTFN)
+
def test_keylog_filename(self):
self.addCleanup(os_helper.unlink, os_helper.TESTFN)
client_context, server_context, hostname = testing_context()
diff --git
a/Misc/NEWS.d/next/Library/2026-08-20-12-00-00.gh-issue-156099.Kp4vRt.rst
b/Misc/NEWS.d/next/Library/2026-08-20-12-00-00.gh-issue-156099.Kp4vRt.rst
new file mode 100644
index 000000000000000..1092a5a53785635
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2026-08-20-12-00-00.gh-issue-156099.Kp4vRt.rst
@@ -0,0 +1,3 @@
+Fix a crash when deleting the ``keylog_filename`` attribute of
+:class:`ssl.SSLContext`.
+It now raises :exc:`AttributeError`.
diff --git a/Modules/_ssl/debughelpers.c b/Modules/_ssl/debughelpers.c
index fb9043994f08f9e..b2d552f97e5b0e1 100644
--- a/Modules/_ssl/debughelpers.c
+++ b/Modules/_ssl/debughelpers.c
@@ -182,6 +182,12 @@ static int
_PySSLContext_set_keylog_filename(PyObject *op, PyObject *arg,
void *Py_UNUSED(closure))
{
+ if (arg == NULL) {
+ PyErr_Format(PyExc_AttributeError,
+ "attribute 'keylog_filename' of '%.100s' objects "
+ "cannot be deleted", Py_TYPE(op)->tp_name);
+ return -1;
+ }
#if defined(MS_WINDOWS_APP) && !defined(MS_WINDOWS_DESKTOP)
PyErr_SetString(PyExc_NotImplementedError,
"set_keylog_filename: unavailable on UWP build");
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]