Author: Philip Jenvey <pjen...@underboss.org>
Branch: 
Changeset: r92425:a18e6d50eca1
Date: 2017-09-20 10:26 -0700
http://bitbucket.org/pypy/pypy/changeset/a18e6d50eca1/

Log:    fix memory leak in _get_crl_dp

        see https://github.com/python/cpython/commit/b2b00e0

diff --git a/pypy/module/_ssl/interp_ssl.py b/pypy/module/_ssl/interp_ssl.py
--- a/pypy/module/_ssl/interp_ssl.py
+++ b/pypy/module/_ssl/interp_ssl.py
@@ -996,9 +996,6 @@
         libssl_AUTHORITY_INFO_ACCESS_free(info)
 
 def _get_crl_dp(space, certificate):
-    if OPENSSL_VERSION_NUMBER >= 0x10001000:
-        # Calls x509v3_cache_extensions and sets up crldp
-        libssl_X509_check_ca(certificate)
     dps = rffi.cast(stack_st_DIST_POINT, libssl_X509_get_ext_d2i(
         certificate, NID_crl_distribution_points, None, None))
     if not dps:
@@ -1020,8 +1017,7 @@
                 s_uri = rffi.charpsize2str(uri.c_data, length)
                 cdp_w.append(space.newtext(s_uri))
     finally:
-        if OPENSSL_VERSION_NUMBER < 0x10001000:
-            libssl_sk_DIST_POINT_free(dps)
+        libssl_CRL_DIST_POINTS_free(dps)
     return space.newtuple(cdp_w[:])
 
 def checkwait(space, w_sock, writing):
diff --git a/rpython/rlib/ropenssl.py b/rpython/rlib/ropenssl.py
--- a/rpython/rlib/ropenssl.py
+++ b/rpython/rlib/ropenssl.py
@@ -473,6 +473,7 @@
 ssl_external('sk_ACCESS_DESCRIPTION_value', [AUTHORITY_INFO_ACCESS, rffi.INT], 
ACCESS_DESCRIPTION,
              macro=True)
 ssl_external('AUTHORITY_INFO_ACCESS_free', [AUTHORITY_INFO_ACCESS], 
lltype.Void)
+ssl_external('CRL_DIST_POINTS_free', [stack_st_DIST_POINT], lltype.Void)
 
 ssl_external('GENERAL_NAME_print', [BIO, GENERAL_NAME], rffi.INT)
 ssl_external('pypy_GENERAL_NAME_dirn', [GENERAL_NAME], X509_NAME,
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to