X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/b1ab9ed8d0e0f1c3b66d7daa8fd5564444c56195..e3d3b979fd185d8303f28a937baa53a187fb8c7d:/libsecurity_cdsa_client/lib/keyclient.cpp?ds=sidebyside diff --git a/libsecurity_cdsa_client/lib/keyclient.cpp b/libsecurity_cdsa_client/lib/keyclient.cpp index 00c738e0..77e56255 100644 --- a/libsecurity_cdsa_client/lib/keyclient.cpp +++ b/libsecurity_cdsa_client/lib/keyclient.cpp @@ -39,24 +39,25 @@ KeyImpl::KeyImpl(const CSP &csp, const CSSM_KEY &key, bool copy) : ObjectImpl(cs } KeyImpl::KeyImpl(const CSP &csp, const CSSM_DATA &keyData) : ObjectImpl(csp), -CssmKey(keyData.Length, csp->allocator().alloc(keyData.Length)) +CssmKey((uint32)keyData.Length, csp->allocator().alloc((UInt32)keyData.Length)) { memcpy(KeyData.Data, keyData.Data, keyData.Length); mActive=true; } KeyImpl::~KeyImpl() +try +{ + deactivate(); +} +catch (...) { - try - { - deactivate(); - } - catch(...) {} } void KeyImpl::deleteKey(const CSSM_ACCESS_CREDENTIALS *cred) { + StLock _(mActivateMutex); if (mActive) { mActive=false; @@ -104,11 +105,13 @@ KeyImpl::changeOwner(const CSSM_ACL_OWNER_PROTOTYPE &newOwner, void KeyImpl::activate() { + StLock _(mActivateMutex); mActive=true; } void KeyImpl::deactivate() { + StLock _(mActivateMutex); if (mActive) { mActive=false;