summaryrefslogtreecommitdiff
path: root/ckcapi-trust.c
diff options
context:
space:
mode:
authorStef Walter <stef@memberwebs.com>2007-05-06 14:27:39 +0000
committerStef Walter <stef@memberwebs.com>2007-05-06 14:27:39 +0000
commit8ddd21cad4109c44a388acaab72507b8f54e4c35 (patch)
tree203961770737cdcdd598204c12b0f64c22a6b7cc /ckcapi-trust.c
parent80ca168a6b656dfc7bcc0cc32e90391b66b6bf4c (diff)
Fix problem with objects going away due to duplicates.
Diffstat (limited to 'ckcapi-trust.c')
-rw-r--r--ckcapi-trust.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/ckcapi-trust.c b/ckcapi-trust.c
index db543a7..aa8475a 100644
--- a/ckcapi-trust.c
+++ b/ckcapi-trust.c
@@ -411,6 +411,7 @@ CK_RV
ckcapi_trust_find(CkCapiSession* sess, CK_OBJECT_CLASS cls,
CK_ATTRIBUTE_PTR match, CK_ULONG count, CkCapiArray* arr)
{
+ CK_OBJECT_HANDLE id;
CkCapiObject* obj;
CkCapiObject* certobj;
CkCapiObjectData* objdata;
@@ -422,7 +423,7 @@ ckcapi_trust_find(CkCapiSession* sess, CK_OBJECT_CLASS cls,
return CKR_OK;
/* Get a list of all certificates */
- certarr = ckcapi_array_new(0, 1, sizeof(CkCapiObject*));
+ certarr = ckcapi_array_new(0, 1, sizeof(CK_OBJECT_HANDLE));
if(!certarr)
return CKR_HOST_MEMORY;
ret = list_matching_certificates(sess, match, count, certarr);
@@ -432,7 +433,10 @@ ckcapi_trust_find(CkCapiSession* sess, CK_OBJECT_CLASS cls,
{
for(i = 0; i < certarr->len; ++i)
{
- certobj = ckcapi_array_index(certarr, CkCapiObject*, i);
+ id = ckcapi_array_index(certarr, CK_OBJECT_HANDLE, i);
+ ASSERT(id);
+
+ certobj = ckcapi_object_lookup (sess, id);
ASSERT(certobj);
/* We'll register a trust object for any loaded certificate */
@@ -448,7 +452,7 @@ ckcapi_trust_find(CkCapiSession* sess, CK_OBJECT_CLASS cls,
/* Only return new object if it matches */
if(ckcapi_object_data_match(objdata, match, count))
- ckcapi_array_append(arr, obj);
+ ckcapi_array_append(arr, obj->id);
}
}