summaryrefslogtreecommitdiff
path: root/ckcapi-cert.c
diff options
context:
space:
mode:
Diffstat (limited to 'ckcapi-cert.c')
-rw-r--r--ckcapi-cert.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/ckcapi-cert.c b/ckcapi-cert.c
index 887fefb..501f2a2 100644
--- a/ckcapi-cert.c
+++ b/ckcapi-cert.c
@@ -405,7 +405,7 @@ cert_load_data(CkCapiSession* sess, CkCapiObject* obj, CkCapiObjectData* objdata
* certificate object is a CERT_CONTEXT pointer.
*/
objdata->data = (void*)cert;
- objdata->data_funcs = cert_objdata_vtable;
+ objdata->data_funcs = &cert_objdata_vtable;
return CKR_OK;
}
@@ -448,7 +448,7 @@ register_cert_object(CkCapiSession* sess, const char* store, PCCERT_CONTEXT cert
cobj->obj.id = 0;
cobj->obj.unique_key = UNIQUE_KEY_AT(cobj, otype);
cobj->obj.unique_len = UNIQUE_KEY_VAR_LEN(cobj, otype, cert_data, len);
- cobj->obj.obj_funcs = cert_object_vtable;
+ cobj->obj.obj_funcs = &cert_object_vtable;
/* Copy Issuer data in */
cobj->issuer.cbData = cert->pCertInfo->Issuer.cbData;
@@ -481,6 +481,10 @@ clear_object_data_for_store(CkCapiSession* sess, CkCapiObject* obj,
const char* store = (const char*) arg;
CertObject *cobj = (CertObject*)obj;
+ // Is it one of ours?
+ if(obj->obj_funcs != &cert_object_vtable)
+ return;
+
if(strcmp(cobj->store, store) == 0)
ckcapi_session_clear_object_data(sess, obj);
}
@@ -517,7 +521,7 @@ find_in_store(CkCapiSession* sess, const char* store_name,
while((cert = CertEnumCertificatesInStore(store, cert)) != NULL)
{
objdata.data = (void*)cert;
- objdata.data_funcs = cert_objdata_vtable;
+ objdata.data_funcs = &cert_objdata_vtable;
if(ckcapi_object_data_match(&objdata, match, count))
{
@@ -581,7 +585,7 @@ match_in_store(CkCapiSession* sess, const char* store_name, PCERT_INFO info,
/* Match the certificate */
objdata.data = (void*)cert;
- objdata.data_funcs = cert_objdata_vtable;
+ objdata.data_funcs = &cert_objdata_vtable;
if(ckcapi_object_data_match(&objdata, match, count))
{