Commit 86429bd1 authored by Benjamin Peterson's avatar Benjamin Peterson

merge 3.5 (#25569)

parents a99ab63d eda06c8f
...@@ -229,6 +229,8 @@ Library ...@@ -229,6 +229,8 @@ Library
- Issue #24881: Fixed setting binary mode in Python implementation of FileIO - Issue #24881: Fixed setting binary mode in Python implementation of FileIO
on Windows and Cygwin. Patch from Akira Li. on Windows and Cygwin. Patch from Akira Li.
- Issue #25569: Fix memory leak in SSLSocket.getpeercert().
- Issue #25471: Sockets returned from accept() shouldn't appear to be - Issue #25471: Sockets returned from accept() shouldn't appear to be
nonblocking. nonblocking.
......
...@@ -1067,25 +1067,23 @@ _get_aia_uri(X509 *certificate, int nid) { ...@@ -1067,25 +1067,23 @@ _get_aia_uri(X509 *certificate, int nid) {
static PyObject * static PyObject *
_get_crl_dp(X509 *certificate) { _get_crl_dp(X509 *certificate) {
STACK_OF(DIST_POINT) *dps; STACK_OF(DIST_POINT) *dps;
int i, j, result; int i, j;
PyObject *lst; PyObject *lst, *res = NULL;
#if OPENSSL_VERSION_NUMBER < 0x10001000L #if OPENSSL_VERSION_NUMBER < 0x10001000L
dps = X509_get_ext_d2i(certificate, NID_crl_distribution_points, dps = X509_get_ext_d2i(certificate, NID_crl_distribution_points, NULL, NULL);
NULL, NULL);
#else #else
/* Calls x509v3_cache_extensions and sets up crldp */ /* Calls x509v3_cache_extensions and sets up crldp */
X509_check_ca(certificate); X509_check_ca(certificate);
dps = certificate->crldp; dps = certificate->crldp;
#endif #endif
if (dps == NULL) { if (dps == NULL)
return Py_None; return Py_None;
}
if ((lst = PyList_New(0)) == NULL) { lst = PyList_New(0);
return NULL; if (lst == NULL)
} goto done;
for (i=0; i < sk_DIST_POINT_num(dps); i++) { for (i=0; i < sk_DIST_POINT_num(dps); i++) {
DIST_POINT *dp; DIST_POINT *dp;
...@@ -1098,6 +1096,7 @@ _get_crl_dp(X509 *certificate) { ...@@ -1098,6 +1096,7 @@ _get_crl_dp(X509 *certificate) {
GENERAL_NAME *gn; GENERAL_NAME *gn;
ASN1_IA5STRING *uri; ASN1_IA5STRING *uri;
PyObject *ouri; PyObject *ouri;
int err;
gn = sk_GENERAL_NAME_value(gns, j); gn = sk_GENERAL_NAME_value(gns, j);
if (gn->type != GEN_URI) { if (gn->type != GEN_URI) {
...@@ -1106,28 +1105,25 @@ _get_crl_dp(X509 *certificate) { ...@@ -1106,28 +1105,25 @@ _get_crl_dp(X509 *certificate) {
uri = gn->d.uniformResourceIdentifier; uri = gn->d.uniformResourceIdentifier;
ouri = PyUnicode_FromStringAndSize((char *)uri->data, ouri = PyUnicode_FromStringAndSize((char *)uri->data,
uri->length); uri->length);
if (ouri == NULL) { if (ouri == NULL)
Py_DECREF(lst); goto done;
return NULL;
} err = PyList_Append(lst, ouri);
result = PyList_Append(lst, ouri);
Py_DECREF(ouri); Py_DECREF(ouri);
if (result < 0) { if (err < 0)
Py_DECREF(lst); goto done;
return NULL;
}
} }
} }
/* convert to tuple or None */
if (PyList_Size(lst) == 0) { /* Convert to tuple. */
Py_DECREF(lst); res = (PyList_GET_SIZE(lst) > 0) ? PyList_AsTuple(lst) : Py_None;
return Py_None;
} else { done:
PyObject *tup; Py_XDECREF(lst);
tup = PyList_AsTuple(lst); #if OPENSSL_VERSION_NUMBER < 0x10001000L
Py_DECREF(lst); sk_DIST_POINT_free(dsp);
return tup; #endif
} return res;
} }
static PyObject * static PyObject *
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment