summaryrefslogtreecommitdiffstats
path: root/base
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 /base
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
Diffstat (limited to 'base')
-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_;