From e391580e079af9506764d2efd5b9ab868e59f33d Mon Sep 17 00:00:00 2001 From: Rob Austein Date: Tue, 1 Nov 2016 17:36:58 -0400 Subject: Fix hal_rpc_pkey_match() calling convention. Old calling sequence didn't quite work, caller had no sane way to know how large the buffer needed to be. Revised sequence is similar to what the PKCS #11 C_FindObject() call does: return the next batch of UUIDs, up to the number specified, end of data indicated by getting back something less than a full block of UUIDs. --- ks_volatile.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'ks_volatile.c') diff --git a/ks_volatile.c b/ks_volatile.c index 2e6ea3e..c416263 100644 --- a/ks_volatile.c +++ b/ks_volatile.c @@ -414,10 +414,7 @@ static hal_error_t ks_match(hal_ks_t *ks, else if (err != HAL_OK) return err; - while (*result_len < result_max) { - - if (++i >= ksv->db->ksi.used) - return HAL_OK; + while (*result_len < result_max && ++i < ksv->db->ksi.used) { unsigned b = ksv->db->ksi.index[i]; @@ -466,7 +463,7 @@ static hal_error_t ks_match(hal_ks_t *ks, ++*result_len; } - return HAL_ERROR_RESULT_TOO_LONG; + return HAL_OK; } static hal_error_t ks_set_attribute(hal_ks_t *ks, -- cgit v1.2.3