diff options
author | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2017-04-25 10:36:22 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@redhat.com> | 2017-04-25 10:36:22 +0200 |
commit | 3202ab340cfa3b758806ddb6d909af05c1c631d4 (patch) | |
tree | 5ba86477316704913fcab59a6f2cdcb0e1c4bb17 | |
parent | 6abc01095702bccf1b966eb26085d6d6fdfb50be (diff) | |
download | gnutls-3202ab340cfa3b758806ddb6d909af05c1c631d4.tar.gz |
pkcs12: clean ups in PKCS#12 parsing
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r-- | lib/x509/pkcs12.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/x509/pkcs12.c b/lib/x509/pkcs12.c index e94e1354e2..00e16d4c66 100644 --- a/lib/x509/pkcs12.c +++ b/lib/x509/pkcs12.c @@ -1486,8 +1486,11 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, } ret = gnutls_pkcs12_get_bag(p12, idx, bag); - if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + gnutls_pkcs12_bag_deinit(bag); + bag = NULL; break; + } if (ret < 0) { gnutls_assert(); goto done; @@ -1588,6 +1591,7 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, idx++; gnutls_pkcs12_bag_deinit(bag); + bag = NULL; if (privkey_ok != 0) /* private key was found */ break; @@ -1611,8 +1615,11 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, } ret = gnutls_pkcs12_get_bag(p12, idx, bag); - if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) + if (ret == GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE) { + gnutls_pkcs12_bag_deinit(bag); + bag = NULL; break; + } if (ret < 0) { gnutls_assert(); goto done; @@ -1758,6 +1765,7 @@ gnutls_pkcs12_simple_parse(gnutls_pkcs12_t p12, idx++; gnutls_pkcs12_bag_deinit(bag); + bag = NULL; } if (chain != NULL) { |