summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-26 01:09:10 +0000
committerrsleevi@chromium.org <rsleevi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-01-26 01:09:10 +0000
commit5f601a384fc70e3ee0e588f28506b73d1a72a77b (patch)
tree375edbc12c698a101880dbb8e3cd4ae282dc27c2
parent4e90a2717503fa6c62306822392d51e1a8b9cc3e (diff)
downloadchromium_src-5f601a384fc70e3ee0e588f28506b73d1a72a77b.zip
chromium_src-5f601a384fc70e3ee0e588f28506b73d1a72a77b.tar.gz
chromium_src-5f601a384fc70e3ee0e588f28506b73d1a72a77b.tar.bz2
Allow CDSA/CSSM to be used on worker threads in debug builds by making both the CSSM init singleton and the Mac Security Services lock singleton leaky.
This primarily affects the use of <keygen> in a debug build, as the RSA private key is generated on a worker thread and needs to hold the Mac Security Services lock. BUG=none TEST=none Review URL: http://codereview.chromium.org/6354017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@72580 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--base/crypto/cssm_init.cc12
1 files changed, 6 insertions, 6 deletions
diff --git a/base/crypto/cssm_init.cc b/base/crypto/cssm_init.cc
index f588f30..eea9d1b 100644
--- a/base/crypto/cssm_init.cc
+++ b/base/crypto/cssm_init.cc
@@ -23,10 +23,11 @@ namespace {
class CSSMInitSingleton {
public:
static CSSMInitSingleton* GetInstance() {
- return Singleton<CSSMInitSingleton>::get();
+ return Singleton<CSSMInitSingleton,
+ LeakySingletonTraits<CSSMInitSingleton> >::get();
}
- CSSM_CSP_HANDLE csp_handle() const {return csp_handle_;}
+ CSSM_CSP_HANDLE csp_handle() const { return csp_handle_; }
private:
CSSMInitSingleton() : inited_(false), loaded_(false), csp_handle_(NULL) {
@@ -87,18 +88,17 @@ class CSSMInitSingleton {
class SecurityServicesSingleton {
public:
static SecurityServicesSingleton* GetInstance() {
- return Singleton<SecurityServicesSingleton>::get();
+ return Singleton<SecurityServicesSingleton,
+ LeakySingletonTraits<SecurityServicesSingleton> >::get();
}
- ~SecurityServicesSingleton() {}
-
base::Lock& lock() { return lock_; }
private:
- friend class Singleton<SecurityServicesSingleton>;
friend struct DefaultSingletonTraits<SecurityServicesSingleton>;
SecurityServicesSingleton() {}
+ ~SecurityServicesSingleton() {}
base::Lock lock_;