summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2012-02-19 20:33:56 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2012-02-19 20:33:56 +0100
commit9c62f4feb2bdd6fbbb06eb0c60bfdea80d21bbb8 (patch)
tree16b89b880662bd21d5653512c5e1be3b19ed7bd6
parent642e6b5ca996325dc0ca6401a3b87039408b2585 (diff)
downloadgnutls-9c62f4feb2bdd6fbbb06eb0c60bfdea80d21bbb8.tar.gz
Deinitialize the correct number of certificates. Reported by Remi Gacogne.
-rw-r--r--lib/auth/cert.c1
-rw-r--r--lib/gnutls_pcert.c9
2 files changed, 6 insertions, 4 deletions
diff --git a/lib/auth/cert.c b/lib/auth/cert.c
index b2bfca896d..7582c759ae 100644
--- a/lib/auth/cert.c
+++ b/lib/auth/cert.c
@@ -1172,6 +1172,7 @@ _gnutls_proc_x509_server_certificate (gnutls_session_t session,
if (ret < 0)
{
gnutls_assert ();
+ peer_certificate_list_size = j;
goto cleanup;
}
diff --git a/lib/gnutls_pcert.c b/lib/gnutls_pcert.c
index 17e9c4f764..1211e2d6fb 100644
--- a/lib/gnutls_pcert.c
+++ b/lib/gnutls_pcert.c
@@ -89,6 +89,7 @@ size_t sz;
if (ret < 0)
{
gnutls_pubkey_deinit(pcert->pubkey);
+ pcert->pubkey = NULL;
ret = gnutls_assert_val(ret);
goto cleanup;
}
@@ -96,7 +97,7 @@ size_t sz;
return 0;
cleanup:
- gnutls_free(pcert->cert.data);
+ _gnutls_free_datum(&pcert->cert);
return ret;
}
@@ -281,6 +282,7 @@ size_t sz;
if (ret < 0)
{
gnutls_pubkey_deinit(pcert->pubkey);
+ pcert->pubkey = NULL;
ret = gnutls_assert_val(ret);
goto cleanup;
}
@@ -288,7 +290,7 @@ size_t sz;
return 0;
cleanup:
- gnutls_free(pcert->cert.data);
+ _gnutls_free_datum(&pcert->cert);
return ret;
}
@@ -373,8 +375,7 @@ gnutls_pcert_deinit (gnutls_pcert_st *pcert)
{
gnutls_pubkey_deinit(pcert->pubkey);
pcert->pubkey = NULL;
- gnutls_free(pcert->cert.data);
- pcert->cert.data = NULL;
+ _gnutls_free_datum(&pcert->cert);
}
/* Converts the first certificate for the cert_auth_info structure