X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=ssl%2Fssl_cert.c;h=7908dcccdb8a8d0552059f4f802537a30cc1ecff;hb=5abe32d8611b26630305731f7dd4ea564264719e;hp=0c9bd073784c44f10403c9164162e3f29ae73c14;hpb=1d42741a19d31b50b645a6024909e45e9501fb65;p=oweals%2Fopenssl.git diff --git a/ssl/ssl_cert.c b/ssl/ssl_cert.c index 0c9bd07378..7908dcccdb 100644 --- a/ssl/ssl_cert.c +++ b/ssl/ssl_cert.c @@ -121,7 +121,9 @@ #include #include #include +#ifndef OPENSSL_NO_DH #include +#endif #include #include "ssl_locl.h" @@ -198,7 +200,6 @@ CERT *ssl_cert_dup(CERT *cert) #ifndef OPENSSL_NO_DH if (cert->dh_tmp != NULL) { - /* DH parameters don't have a reference count */ ret->dh_tmp = DHparams_dup(cert->dh_tmp); if (ret->dh_tmp == NULL) { @@ -232,8 +233,12 @@ CERT *ssl_cert_dup(CERT *cert) #ifndef OPENSSL_NO_ECDH if (cert->ecdh_tmp) { - EC_KEY_up_ref(cert->ecdh_tmp); - ret->ecdh_tmp = cert->ecdh_tmp; + ret->ecdh_tmp = EC_KEY_dup(cert->ecdh_tmp); + if (ret->ecdh_tmp == NULL) + { + SSLerr(SSL_F_SSL_CERT_DUP, ERR_R_EC_LIB); + goto err; + } } ret->ecdh_tmp_cb = cert->ecdh_tmp_cb; #endif