[Python-checkins] cpython (merge 3.2 -> default): Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert().

antoine.pitrou python-checkins at python.org
Wed Feb 15 22:34:40 CET 2012


http://hg.python.org/cpython/rev/9ab501b3e22d
changeset: 74964:9ab501b3e22d
parent: 74960:ba5b337ecc27
parent: 74963:f3a4c2b34973
user: Antoine Pitrou <solipsis at pitrou.net>
date: Wed Feb 15 22:28:21 2012 +0100
summary:
 Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert().
files:
 Misc/NEWS | 2 ++
 Modules/_ssl.c | 23 ++++++++++++++---------
 2 files changed, 16 insertions(+), 9 deletions(-)
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -466,6 +466,8 @@
 Library
 -------
 
+- Issue #13014: Fix a possible reference leak in SSLSocket.getpeercert().
+
 - Issue #13777: Add PF_SYSTEM sockets on OS X.
 Patch by Michael Goderbauer.
 
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -547,15 +547,20 @@
 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 */
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /