summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@gnutls.org>2018-01-26 15:44:21 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2018-01-26 15:44:25 +0100
commit4cbaf69d743d9e9e5fa241716556b3afc9857219 (patch)
tree59ce9e051912fb8db471fc4ce3b8a38ae859dd92
parent918aa9f21148dd7937650d344294404a46fcf21f (diff)
downloadgnutls-4cbaf69d743d9e9e5fa241716556b3afc9857219.tar.gz
certtool: avoid duplicate deinitialization on --certificate-pubkey
Resolves #368 Signed-off-by: Nikos Mavrogiannopoulos <nmav@gnutls.org>
-rw-r--r--src/certtool.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/certtool.c b/src/certtool.c
index c4dd989104..95b2aed88e 100644
--- a/src/certtool.c
+++ b/src/certtool.c
@@ -1481,9 +1481,10 @@ void certificate_info(int pubkey, common_info_st * cinfo)
if (outcert_format == GNUTLS_X509_FMT_PEM)
print_certificate_info(crts[i], outfile, 1);
- if (pubkey)
+ if (pubkey) {
+ /* this deinitializes the certificate */
pubkey_info(crts[i], cinfo);
- else {
+ } else {
size = lbuffer_size;
ret =
gnutls_x509_crt_export(crts[i], outcert_format,
@@ -1495,9 +1496,10 @@ void certificate_info(int pubkey, common_info_st * cinfo)
}
fwrite(lbuffer, 1, size, outfile);
+
+ gnutls_x509_crt_deinit(crts[i]);
}
- gnutls_x509_crt_deinit(crts[i]);
}
gnutls_free(crts);
}
@@ -3691,7 +3693,9 @@ void smime_to_pkcs7(void)
free(lineptr);
}
-/* Tries to find a public key in the provided options or stdin */
+/* Tries to find a public key in the provided options or stdin
+ * When @crt is provided, it will be deinitialized.
+ */
static
gnutls_pubkey_t find_pubkey(gnutls_x509_crt_t crt, common_info_st * cinfo)
{