[3.14] gh-156099: Fix a crash when deleting SSLContext.keylog_filename (GH-156103) (GH-156149)
serhiy-storchaka <[email protected]>
| Newsgroups | gmane.comp.python.cvs |
|---|---|
| Message-ID | <[email protected]> |
https://github.com/python/cpython/commit/de386f24350e184cdb121a9deb8d81e4e7842b8c commit: de386f24350e184cdb121a9deb8d81e4e7842b8c branch: 3.14 author: Serhiy Storchaka <[email protected]> committer: serhiy-storchaka <[email protected]> date: 2026-08-21T07:28:09Z summary: [3.14] gh-156099: Fix a crash when deleting SSLContext.keylog_filename (GH-156103) (GH-156149) The setter did not check the value for NULL and passed it to Py_fopen(). (cherry picked from commit 5ebd4860d3746eaeb890c947799508e1ed4936fe) 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 d845a39b68e4d4b..a2de16a428abab4 100644 --- a/Lib/test/test_ssl.py +++ b/Lib/test/test_ssl.py @@ -5184,6 +5184,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) + @requires_keylog def test_keylog_filename(self): self.addCleanup(os_helper.unlink, os_helper.TESTFN) 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 608ef07b5c5e432..01a54b59e953cb9 100644 --- a/Modules/_ssl/debughelpers.c +++ b/Modules/_ssl/debughelpers.c @@ -176,6 +176,12 @@ _PySSLContext_set_keylog_filename(PyObject *op, PyObject *arg, PySSLContext *self = PySSLContext_CAST(op); FILE *fp; + 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) && defined(_DEBUG) PyErr_SetString(PyExc_NotImplementedError, "set_keylog_filename: unavailable on Windows debug 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]