mirror of
https://github.com/haproxy/haproxy.git
synced 2026-04-21 14:17:30 -04:00
BUG/MINOR: ssl: double free on error for ckch->{key,cert}
On last error in ssl_sock_load_pem_into_ckch, key/cert are released
and ckch->{key,cert} are released in ssl_sock_free_cert_key_and_chain_contents.
This commit is contained in:
parent
ed17f47c71
commit
83cbd3c89f
1 changed files with 7 additions and 7 deletions
|
|
@ -3097,7 +3097,7 @@ static int ssl_sock_load_pem_into_ckch(const char *path, char *buf, struct cert_
|
|||
{
|
||||
BIO *in = NULL;
|
||||
int ret = 1;
|
||||
X509 *ca = NULL;
|
||||
X509 *ca;
|
||||
X509 *cert = NULL;
|
||||
EVP_PKEY *key = NULL;
|
||||
DH *dh;
|
||||
|
|
@ -3172,10 +3172,12 @@ static int ssl_sock_load_pem_into_ckch(const char *path, char *buf, struct cert_
|
|||
if (ckch->key) /* free the previous key */
|
||||
EVP_PKEY_free(ckch->key);
|
||||
ckch->key = key;
|
||||
key = NULL;
|
||||
|
||||
if (ckch->cert) /* free the previous cert */
|
||||
X509_free(ckch->cert);
|
||||
ckch->cert = cert;
|
||||
cert = NULL;
|
||||
|
||||
/* Look for a Certificate Chain */
|
||||
ca = PEM_read_bio_X509(in, NULL, NULL, NULL);
|
||||
|
|
@ -3215,12 +3217,10 @@ end:
|
|||
ERR_clear_error();
|
||||
if (in)
|
||||
BIO_free(in);
|
||||
if (ret != 0) {
|
||||
if (key)
|
||||
EVP_PKEY_free(key);
|
||||
if (cert)
|
||||
X509_free(cert);
|
||||
}
|
||||
if (key)
|
||||
EVP_PKEY_free(key);
|
||||
if (cert)
|
||||
X509_free(cert);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue