diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2018-08-31 09:04:25 -0400 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2018-08-31 09:04:25 -0400 |
commit | 9a53a4b9aadb4522d9354d722c3dbdfcb5bbf0bc (patch) | |
tree | 58029a6ecb593c47f32d9e44c4436888918561ea /src/cryptography/hazmat/backends/openssl/backend.py | |
parent | 6511f88140da1e948cdaa63a4f8d0fef21003b34 (diff) | |
download | cryptography-9a53a4b9aadb4522d9354d722c3dbdfcb5bbf0bc.tar.gz cryptography-9a53a4b9aadb4522d9354d722c3dbdfcb5bbf0bc.tar.bz2 cryptography-9a53a4b9aadb4522d9354d722c3dbdfcb5bbf0bc.zip |
Fixed two memory leaks in x509 csr extensions (#4434)
* Fixed a memory leak in x.509 OCSP no check
* Fix the _actual_ leak
* Speed up symbolizations
* Disable backtrace by default, because it doesn't work on Windows
* line length
Diffstat (limited to 'src/cryptography/hazmat/backends/openssl/backend.py')
-rw-r--r-- | src/cryptography/hazmat/backends/openssl/backend.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py index bdf8f370..cfd7c89f 100644 --- a/src/cryptography/hazmat/backends/openssl/backend.py +++ b/src/cryptography/hazmat/backends/openssl/backend.py @@ -707,10 +707,15 @@ class Backend(object): sk_extension = self._lib.sk_X509_EXTENSION_new_null() self.openssl_assert(sk_extension != self._ffi.NULL) sk_extension = self._ffi.gc( - sk_extension, self._lib.sk_X509_EXTENSION_free + sk_extension, + lambda x: self._lib.sk_X509_EXTENSION_pop_free( + x, self._ffi.addressof( + self._lib._original_lib, "X509_EXTENSION_free" + ) + ) ) - # gc is not necessary for CSRs, as sk_X509_EXTENSION_free - # will release all the X509_EXTENSIONs. + # Don't GC individual extensions because the memory is owned by + # sk_extensions and will be freed along with it. self._create_x509_extensions( extensions=builder._extensions, handlers=_EXTENSION_ENCODE_HANDLERS, |