From 2fbb6ab93455a89552ba056bce12dfe19bfd393a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Wed, 4 Feb 2009 22:09:51 +0000 Subject: [PATCH] Change prototype of hx509_certs_filter(). git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24612 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/hx509/keyset.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/lib/hx509/keyset.c b/lib/hx509/keyset.c index 0a4bb9613..808dfa59a 100644 --- a/lib/hx509/keyset.c +++ b/lib/hx509/keyset.c @@ -510,7 +510,7 @@ int hx509_certs_filter(hx509_context context, hx509_certs certs, const hx509_query *q, - hx509_certs result) + hx509_certs *result) { hx509_cursor cursor; hx509_cert c; @@ -518,10 +518,17 @@ hx509_certs_filter(hx509_context context, _hx509_query_statistic(context, 0, q); - ret = hx509_certs_start_seq(context, certs, &cursor); + ret = hx509_certs_init(context, "MEMORY:filter-certs", 0, + NULL, result); if (ret) return ret; + ret = hx509_certs_start_seq(context, certs, &cursor); + if (ret) { + hx509_certs_free(result); + return ret; + } + c = NULL; while (1) { ret = hx509_certs_next_cert(context, certs, cursor, &c); @@ -530,20 +537,24 @@ hx509_certs_filter(hx509_context context, if (c == NULL) break; if (_hx509_query_match_cert(context, q, c)) { - hx509_certs_add(context, result, c); + hx509_certs_add(context, *result, c); found = 1; } hx509_cert_free(c); } hx509_certs_end_seq(context, certs, cursor); - if (ret) + if (ret) { + hx509_certs_free(result); return ret; + } + /** * Return HX509_CERT_NOT_FOUND if no certificate in certs matched * the query. */ if (!found) { + hx509_certs_free(result); hx509_clear_error_string(context); return HX509_CERT_NOT_FOUND; }