diff options
author | Rob Austein <sra@hactrn.net> | 2016-11-01 17:36:58 -0400 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2016-11-01 17:36:58 -0400 |
commit | e391580e079af9506764d2efd5b9ab868e59f33d (patch) | |
tree | 3d2d5c74eede5a5210a4ba27d307b2bcbd2af4ee /ks_volatile.c | |
parent | e2793cfe01ca0ff16ecf8c211106526b13268976 (diff) |
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.
Diffstat (limited to 'ks_volatile.c')
-rw-r--r-- | ks_volatile.c | 7 |
1 files changed, 2 insertions, 5 deletions
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, |