Skip to content

Commit 4aae795

Browse files
authored
Fix some memory leaks in CRL.export (#1170)
The bio was never freed, or used. sometime is never freed. While I'm here, check return values for all the functions called here.
1 parent 1cafac4 commit 4aae795

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/OpenSSL/crypto.py

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2502,23 +2502,26 @@ def export(
25022502
if digest_obj == _ffi.NULL:
25032503
raise ValueError("No such digest method")
25042504

2505-
bio = _lib.BIO_new(_lib.BIO_s_mem())
2506-
_openssl_assert(bio != _ffi.NULL)
2507-
25082505
# A scratch time object to give different values to different CRL
25092506
# fields
25102507
sometime = _lib.ASN1_TIME_new()
25112508
_openssl_assert(sometime != _ffi.NULL)
2509+
sometime = _ffi.gc(sometime, _lib.ASN1_TIME_free)
25122510

2513-
_lib.X509_gmtime_adj(sometime, 0)
2514-
_lib.X509_CRL_set1_lastUpdate(self._crl, sometime)
2511+
ret = _lib.X509_gmtime_adj(sometime, 0)
2512+
_openssl_assert(ret != _ffi.NULL)
2513+
ret = _lib.X509_CRL_set1_lastUpdate(self._crl, sometime)
2514+
_openssl_assert(ret == 1)
25152515

2516-
_lib.X509_gmtime_adj(sometime, days * 24 * 60 * 60)
2517-
_lib.X509_CRL_set1_nextUpdate(self._crl, sometime)
2516+
ret = _lib.X509_gmtime_adj(sometime, days * 24 * 60 * 60)
2517+
_openssl_assert(ret != _ffi.NULL)
2518+
ret = _lib.X509_CRL_set1_nextUpdate(self._crl, sometime)
2519+
_openssl_assert(ret == 1)
25182520

2519-
_lib.X509_CRL_set_issuer_name(
2521+
ret = _lib.X509_CRL_set_issuer_name(
25202522
self._crl, _lib.X509_get_subject_name(cert._x509)
25212523
)
2524+
_openssl_assert(ret == 1)
25222525

25232526
sign_result = _lib.X509_CRL_sign(self._crl, key._pkey, digest_obj)
25242527
if not sign_result:

0 commit comments

Comments
 (0)