From ad65ce755ea292df565a50e730e4210a3e732f4e Mon Sep 17 00:00:00 2001 From: "Dr. Stephen Henson" Date: Wed, 6 Jan 1999 01:39:24 +0000 Subject: [PATCH] Fix things so DH_free() will be no-op when passed NULL, like RSA_free() and DSA_free(): this was causing crashes when for example an attempt was made to handle a (currently) unsupported DH public key. Also X509_PUBKEY_set()i wasn't checking errors from d2i_PublicKey(). --- CHANGES | 5 ++++- crypto/asn1/x_pubkey.c | 2 +- crypto/dh/dh_lib.c | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index d4d87ec5cf..61be21a2f6 100644 --- a/CHANGES +++ b/CHANGES @@ -5,6 +5,9 @@ Changes between 0.9.1c and 0.9.2 + *) Make DH_free() tolerate being passed a NULL pointer (like RSA_free() and + DSA_free()). Make X509_PUBKEY_set() check for errors in d2i_PublicKey(). + *) X509_name_add_entry() freed the wrong thing after an error. [Arne Ansper ] @@ -23,7 +26,7 @@ [Ralf S. Engelschall] *) Fix the various library and apps files to free up pkeys obtained from - EVP_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions. + X509_PUBKEY_get() et al. Also allow x509.c to handle netscape extensions. [Steve Henson] *) Fix reference counting in X509_PUBKEY_get(). This makes diff --git a/crypto/asn1/x_pubkey.c b/crypto/asn1/x_pubkey.c index a70f53fe6f..2177ebd6ed 100644 --- a/crypto/asn1/x_pubkey.c +++ b/crypto/asn1/x_pubkey.c @@ -183,7 +183,7 @@ EVP_PKEY *pkey; goto err; } - i=i2d_PublicKey(pkey,NULL); + if ((i=i2d_PublicKey(pkey,NULL)) <= 0) goto err; if ((s=(unsigned char *)Malloc(i+1)) == NULL) goto err; p=s; i2d_PublicKey(pkey,&p); diff --git a/crypto/dh/dh_lib.c b/crypto/dh/dh_lib.c index a83c97287e..725d994702 100644 --- a/crypto/dh/dh_lib.c +++ b/crypto/dh/dh_lib.c @@ -88,6 +88,7 @@ DH *DH_new() void DH_free(r) DH *r; { + if(r == NULL) return; if (r->p != NULL) BN_clear_free(r->p); if (r->g != NULL) BN_clear_free(r->g); if (r->pub_key != NULL) BN_clear_free(r->pub_key); -- GitLab