X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5c19dc3ae3bd8e40a9c028b0deddd50ff337692c..7e6b461318c8a779d91381531435a68ee4e8b6ed:/OSX/libsecurity_cdsa_client/lib/cssmclient.h diff --git a/OSX/libsecurity_cdsa_client/lib/cssmclient.h b/OSX/libsecurity_cdsa_client/lib/cssmclient.h index 53719b82..a7bc57ea 100644 --- a/OSX/libsecurity_cdsa_client/lib/cssmclient.h +++ b/OSX/libsecurity_cdsa_client/lib/cssmclient.h @@ -65,7 +65,7 @@ private: // class Error : public CssmError { public: - Error(CSSM_RETURN err) : CssmError(err) { } + Error(CSSM_RETURN err) : CssmError(err, false) { } virtual const char *what () const throw(); enum { @@ -103,6 +103,7 @@ protected: bool mActive; // loaded, attached, etc. RecursiveMutex mActivateMutex; mutable Allocator *mAllocator; // allocator hierarchy (NULL => TBD) + mutable RecursiveMutex mAllocatorMutex; // protects allocator creation template Obj parent() const { assert(mParent); return Obj(static_cast(&(*mParent))); } @@ -350,10 +351,12 @@ private: ~StandardCssm(); void setCssm(CssmImpl *cssm); void unsetCssm(CssmImpl *cssm); - CssmImpl *get(); + Cssm get(); private: - CssmImpl *mCssm; + RefPointer mCssm; // 'Leaks' this object (in that it won't ever be deleted after creation), but + // there's no safe way to vend and re-create this object in a multi-threaded environment + // without an implementation of WeakRefPointer<>. }; static ModuleNexus mStandard; };