aboutsummaryrefslogtreecommitdiff
path: root/ks_volatile.c
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2016-11-01 17:36:58 -0400
committerRob Austein <sra@hactrn.net>2016-11-01 17:36:58 -0400
commite391580e079af9506764d2efd5b9ab868e59f33d (patch)
tree3d2d5c74eede5a5210a4ba27d307b2bcbd2af4ee /ks_volatile.c
parente2793cfe01ca0ff16ecf8c211106526b13268976 (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.c7
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,