diff --git a/src/lib/SoftHSM.cpp b/src/lib/SoftHSM.cpp
index d73fb519c8b287946696509cfe6d27166c5c937d..dd675ecb265bffdd6bfbe27c2aa6a9df4d079f08 100644 (file)
--- a/src/lib/SoftHSM.cpp
+++ b/src/lib/SoftHSM.cpp
else
osobject->abortTransaction();
- if (!bOK)
+ if (!bOK) {
+ handleManager->destroyObject(*phPublicKey);
+ osobject->destroyObject();
rv == CKR_FUNCTION_FAILED;
+ }
}
}
}
@@ -3234,8 +3237,10 @@ CK_RV SoftHSM::CreateObject(CK_SESSION_HANDLE hSession, CK_ATTRIBUTE_PTR pTempla
p11object->init(object);
rv = p11object->saveTemplate(token, isPrivate, pTemplate,ulCount,op);
- if (rv != CKR_OK)
+ if (rv != CKR_OK) {
+ object->destroyObject();
return rv;
+ }
if (isToken) {
*phObject = handleManager->addTokenObject(slot->getSlotID(), isPrivate, object);