diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2018-01-26 15:44:21 +0100 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2018-01-26 15:44:25 +0100 |
commit | 4cbaf69d743d9e9e5fa241716556b3afc9857219 (patch) | |
tree | 59ce9e051912fb8db471fc4ce3b8a38ae859dd92 | |
parent | 918aa9f21148dd7937650d344294404a46fcf21f (diff) | |
download | gnutls-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.c | 12 |
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) { |