diff --git a/Misc/NEWS b/Misc/NEWS index 81ec44b13de..d0161d10de9 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -116,6 +116,8 @@ Core and Builtins Library ------- +- Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert(). + - Issue #13015: Fix a possible reference leak in defaultdict.__repr__. Patch by Suman Saha. diff --git a/Modules/_ssl.c b/Modules/_ssl.c index 751e26e39ab..3fa2d6ac36f 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -519,15 +519,20 @@ _create_tuple_for_X509_NAME (X509_NAME *xname) goto fail1; } /* now, there's typically a dangling RDN */ - if ((rdn != NULL) && (PyList_Size(rdn) > 0)) { - rdnt = PyList_AsTuple(rdn); - Py_DECREF(rdn); - if (rdnt == NULL) - goto fail0; - retcode = PyList_Append(dn, rdnt); - Py_DECREF(rdnt); - if (retcode < 0) - goto fail0; + if (rdn != NULL) { + if (PyList_GET_SIZE(rdn) > 0) { + rdnt = PyList_AsTuple(rdn); + Py_DECREF(rdn); + if (rdnt == NULL) + goto fail0; + retcode = PyList_Append(dn, rdnt); + Py_DECREF(rdnt); + if (retcode < 0) + goto fail0; + } + else { + Py_DECREF(rdn); + } } /* convert list to tuple */