]> git.saurik.com Git - apple/security.git/blobdiff - libsecurity_cdsa_client/lib/keyclient.cpp
Security-55471.14.8.tar.gz
[apple/security.git] / libsecurity_cdsa_client / lib / keyclient.cpp
index 00c738e039ae5bfcd8f7ab875912307dd46d4935..77e56255f75af3878c0fbfb655e1b65b28663e93 100644 (file)
@@ -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<uint8>(keyData.Length)) 
+CssmKey((uint32)keyData.Length, csp->allocator().alloc<uint8>((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<Mutex> _(mActivateMutex);
        if (mActive)
        {
                mActive=false;
@@ -104,11 +105,13 @@ KeyImpl::changeOwner(const CSSM_ACL_OWNER_PROTOTYPE &newOwner,
 
 void KeyImpl::activate()
 {
+    StLock<Mutex> _(mActivateMutex);
        mActive=true;
 }
 
 void KeyImpl::deactivate()
 {
+    StLock<Mutex> _(mActivateMutex);
        if (mActive)
        {
                mActive=false;