From 42a45b4b321d986f4d189480e6607415ce9cb026 Mon Sep 17 00:00:00 2001 From: sobolevn Date: Mon, 17 Jul 2023 21:45:41 +0300 Subject: [PATCH 1/2] gh-106831: Fix `NULL` check of `d2i_SSL_SESSION` result in `_ssl.c` --- .../Library/2023-07-17-21-45-15.gh-issue-106831.RqVq9X.rst | 2 ++ Modules/_ssl.c | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2023-07-17-21-45-15.gh-issue-106831.RqVq9X.rst diff --git a/Misc/NEWS.d/next/Library/2023-07-17-21-45-15.gh-issue-106831.RqVq9X.rst b/Misc/NEWS.d/next/Library/2023-07-17-21-45-15.gh-issue-106831.RqVq9X.rst new file mode 100644 index 00000000000000..d3b98626845392 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2023-07-17-21-45-15.gh-issue-106831.RqVq9X.rst @@ -0,0 +1,2 @@ +Fix potential missing ``NULL`` check of ``d2i_SSL_SESSION`` result in +``_ssl.c``. diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 0cf4d3e9dc8c9b..0b78a3685539bc 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -2822,7 +2822,8 @@ _ssl_session_dup(SSL_SESSION *session) { } const_p = senc; newsession = d2i_SSL_SESSION(NULL, &const_p, slen); - if (session == NULL) { + if (newsession == NULL) { + PyErr_SetString(PyExc_ValueError, "d2i() failed."); goto error; } PyMem_Free(senc); From 3489e6de09eff99297cb28bf5a9f093509afc87e Mon Sep 17 00:00:00 2001 From: sobolevn Date: Mon, 17 Jul 2023 22:17:27 +0300 Subject: [PATCH 2/2] Address review --- Modules/_ssl.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 0b78a3685539bc..8612b3dd53924c 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -2808,7 +2808,7 @@ _ssl_session_dup(SSL_SESSION *session) { /* get length */ slen = i2d_SSL_SESSION(session, NULL); if (slen == 0 || slen > 0xFF00) { - PyErr_SetString(PyExc_ValueError, "i2d() failed."); + PyErr_SetString(PyExc_ValueError, "i2d() failed"); goto error; } if ((senc = PyMem_Malloc(slen)) == NULL) { @@ -2817,13 +2817,13 @@ _ssl_session_dup(SSL_SESSION *session) { } p = senc; if (!i2d_SSL_SESSION(session, &p)) { - PyErr_SetString(PyExc_ValueError, "i2d() failed."); + PyErr_SetString(PyExc_ValueError, "i2d() failed"); goto error; } const_p = senc; newsession = d2i_SSL_SESSION(NULL, &const_p, slen); if (newsession == NULL) { - PyErr_SetString(PyExc_ValueError, "d2i() failed."); + PyErr_SetString(PyExc_ValueError, "d2i() failed"); goto error; } PyMem_Free(senc);