summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Kandaurov <pluknet@nginx.com>2022-01-17 17:05:12 +0300
committerSergey Kandaurov <pluknet@nginx.com>2022-01-17 17:05:12 +0300
commit429150c1fa78317bdb19de380ce709651dbc042c (patch)
treee8ebdec7baf835bdf8af72b6f9403abfea94ea7a
parent22d4ff08bbe764997d157690e422d1077f543908 (diff)
downloadnginx-429150c1fa78317bdb19de380ce709651dbc042c.tar.gz
SSL: free pkey on SSL_CTX_set0_tmp_dh_pkey() failure.
The behaviour was changed in OpenSSL 3.0.1: https://git.openssl.org/?p=openssl.git;a=commitdiff;h=bf17b7b
-rw-r--r--src/event/ngx_event_openssl.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 33977af61..daa28ffe4 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -1383,6 +1383,9 @@ ngx_ssl_dhparam(ngx_conf_t *cf, ngx_ssl_t *ssl, ngx_str_t *file)
if (SSL_CTX_set0_tmp_dh_pkey(ssl->ctx, dh) != 1) {
ngx_ssl_error(NGX_LOG_EMERG, ssl->log, 0,
"SSL_CTX_set0_tmp_dh_pkey(\%s\") failed", file->data);
+#if (OPENSSL_VERSION_NUMBER >= 0x3000001fL)
+ EVP_PKEY_free(dh);
+#endif
BIO_free(bio);
return NGX_ERROR;
}