summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/Library/2023-07-17-21-45-15.gh-issue-106831.RqVq9X.rst2
-rw-r--r--Modules/_ssl.c7
2 files changed, 6 insertions, 3 deletions
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 0000000..d3b9862
--- /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 c1a8eaa..e3bb38e 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -2800,7 +2800,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) {
@@ -2809,12 +2809,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 (session == NULL) {
+ if (newsession == NULL) {
+ PyErr_SetString(PyExc_ValueError, "d2i() failed");
goto error;
}
PyMem_Free(senc);