]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-106831: Fix NULL check of d2i_SSL_SESSION() result in _ssl.c (#106832)
authorNikita Sobolev <mail@sobolevn.me>
Mon, 17 Jul 2023 19:55:40 +0000 (22:55 +0300)
committerGitHub <noreply@github.com>
Mon, 17 Jul 2023 19:55:40 +0000 (19:55 +0000)
Misc/NEWS.d/next/Library/2023-07-17-21-45-15.gh-issue-106831.RqVq9X.rst [new file with mode: 0644]
Modules/_ssl.c

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 (file)
index 0000000..d3b9862
--- /dev/null
@@ -0,0 +1,2 @@
+Fix potential missing ``NULL`` check of ``d2i_SSL_SESSION`` result in
+``_ssl.c``.
index 0cf4d3e9dc8c9b82e4225c5eea2bd99f8a8d8215..8612b3dd53924c5afbbbaf6a270e4f7f3aefc465 100644 (file)
@@ -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,12 +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 (session == NULL) {
+    if (newsession == NULL) {
+        PyErr_SetString(PyExc_ValueError, "d2i() failed");
         goto error;
     }
     PyMem_Free(senc);