[3.12] gh-106831: Fix NULL check of d2i_SSL_SESSION() result in _ssl.c (GH-106832) (#106835)

gh-106831: Fix NULL check of d2i_SSL_SESSION() result in _ssl.c (GH-106832)
(cherry picked from commit ebf2c56b33)

Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
This commit is contained in:
Miss Islington (bot) 2023-07-17 13:40:15 -07:00 committed by GitHub
parent 497bfd5047
commit 2eef81e05e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 3 deletions

View file

@ -0,0 +1,2 @@
Fix potential missing ``NULL`` check of ``d2i_SSL_SESSION`` result in
``_ssl.c``.

View file

@ -2779,7 +2779,7 @@ _ssl_session_dup(SSL_SESSION *session) {
/* get length */ /* get length */
slen = i2d_SSL_SESSION(session, NULL); slen = i2d_SSL_SESSION(session, NULL);
if (slen == 0 || slen > 0xFF00) { if (slen == 0 || slen > 0xFF00) {
PyErr_SetString(PyExc_ValueError, "i2d() failed."); PyErr_SetString(PyExc_ValueError, "i2d() failed");
goto error; goto error;
} }
if ((senc = PyMem_Malloc(slen)) == NULL) { if ((senc = PyMem_Malloc(slen)) == NULL) {
@ -2788,12 +2788,13 @@ _ssl_session_dup(SSL_SESSION *session) {
} }
p = senc; p = senc;
if (!i2d_SSL_SESSION(session, &p)) { if (!i2d_SSL_SESSION(session, &p)) {
PyErr_SetString(PyExc_ValueError, "i2d() failed."); PyErr_SetString(PyExc_ValueError, "i2d() failed");
goto error; goto error;
} }
const_p = senc; const_p = senc;
newsession = d2i_SSL_SESSION(NULL, &const_p, slen); newsession = d2i_SSL_SESSION(NULL, &const_p, slen);
if (session == NULL) { if (newsession == NULL) {
PyErr_SetString(PyExc_ValueError, "d2i() failed");
goto error; goto error;
} }
PyMem_Free(senc); PyMem_Free(senc);