summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/cert-cred-x509.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/cert-cred-x509.c b/lib/cert-cred-x509.c
index 04aa3169b6..f8cd881c2b 100644
--- a/lib/cert-cred-x509.c
+++ b/lib/cert-cred-x509.c
@@ -739,6 +739,7 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res,
gnutls_x509_privkey_t key)
{
int ret;
+ int npcerts = 0;
gnutls_privkey_t pkey;
gnutls_pcert_st *pcerts = NULL;
gnutls_str_array_t names;
@@ -785,10 +786,11 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res,
gnutls_assert();
goto cleanup;
}
+ npcerts = cert_list_size;
ret =
_gnutls_certificate_credential_append_keypair(res, pkey, names, pcerts,
- cert_list_size);
+ npcerts);
if (ret < 0) {
gnutls_assert();
goto cleanup;
@@ -807,6 +809,8 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res,
CRED_RET_SUCCESS(res);
cleanup:
+ while (npcerts-- > 0)
+ gnutls_pcert_deinit(&pcerts[npcerts]);
gnutls_free(pcerts);
_gnutls_str_array_clear(&names);
return ret;