diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2012-02-19 20:33:56 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2012-02-19 20:33:56 +0100 |
commit | 9c62f4feb2bdd6fbbb06eb0c60bfdea80d21bbb8 (patch) | |
tree | 16b89b880662bd21d5653512c5e1be3b19ed7bd6 | |
parent | 642e6b5ca996325dc0ca6401a3b87039408b2585 (diff) | |
download | gnutls-9c62f4feb2bdd6fbbb06eb0c60bfdea80d21bbb8.tar.gz |
Deinitialize the correct number of certificates. Reported by Remi Gacogne.
-rw-r--r-- | lib/auth/cert.c | 1 | ||||
-rw-r--r-- | lib/gnutls_pcert.c | 9 |
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 |