summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2017-04-25 10:36:22 +0200
committerNikos Mavrogiannopoulos <nmav@redhat.com>2017-04-25 10:36:22 +0200
commit3202ab340cfa3b758806ddb6d909af05c1c631d4 (patch)
tree5ba86477316704913fcab59a6f2cdcb0e1c4bb17
parent6abc01095702bccf1b966eb26085d6d6fdfb50be (diff)
downloadgnutls-3202ab340cfa3b758806ddb6d909af05c1c631d4.tar.gz
pkcs12: clean ups in PKCS#12 parsing
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r--lib/x509/pkcs12.c12
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) {