diff --git a/openssl/src/ecdsa.rs b/openssl/src/ecdsa.rs index 06be274f..8dfb742c 100644 --- a/openssl/src/ecdsa.rs +++ b/openssl/src/ecdsa.rs @@ -108,7 +108,7 @@ impl EcdsaSig { /// Decodes a DER-encoded ECDSA signature. /// /// This corresponds to [`d2i_ECDSA_SIG`]. - /// + /// /// [`d2i_ECDSA_SIG`]: https://www.openssl.org/docs/man1.1.0/crypto/d2i_ECDSA_SIG.html from_der, EcdsaSig, @@ -121,7 +121,7 @@ impl EcdsaSigRef { /// Serializes the ECDSA signature into a DER-encoded ECDSASignature structure. /// /// This corresponds to [`i2d_ECDSA_SIG`]. - /// + /// /// [`i2d_ECDSA_SIG`]: https://www.openssl.org/docs/man1.1.0/crypto/i2d_ECDSA_SIG.html to_der, ffi::i2d_ECDSA_SIG @@ -138,6 +138,11 @@ cfg_if! { r: *mut ffi::BIGNUM, s: *mut ffi::BIGNUM, ) -> c_int { + if r.is_null() || s.is_null() { + return 0; + } + ffi::BN_clear_free((*sig).r); + ffi::BN_clear_free((*sig).s); (*sig).r = r; (*sig).s = s; 1