From: Aki Tuomi Date: Sun, 17 May 2015 17:18:26 +0000 (+0300) Subject: Move locking to correct place X-Git-Tag: dnsdist-1.0.0-alpha1~248^2~28^2~42^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=80d33e0c10b165e8c0889eba889842ccc38f9826;p=thirdparty%2Fpdns.git Move locking to correct place --- diff --git a/pdns/pkcs11signers.cc b/pdns/pkcs11signers.cc index 35007013dd..437da33f0b 100644 --- a/pdns/pkcs11signers.cc +++ b/pdns/pkcs11signers.cc @@ -297,7 +297,6 @@ class Pkcs11Token { bool Login(const std::string& pin) { if (pin.empty()) return false; // no empty pin. - Lock l(d_slot->m()); if (d_slot->Login(pin) == true) { LoadAttributes(); } @@ -307,13 +306,13 @@ class Pkcs11Token { bool LoggedIn() { if (d_loaded == false && d_slot->LoggedIn() == true) { - Lock l(d_slot->m()); LoadAttributes(); } return d_slot->LoggedIn(); } void LoadAttributes() { + Lock l(d_slot->m()); std::vector attr; std::vector key; attr.push_back(P11KitAttribute(CKA_CLASS, (unsigned long)CKO_PRIVATE_KEY)); @@ -377,6 +376,7 @@ class Pkcs11Token { } int GenerateKeyPair(CK_MECHANISM_PTR mechanism, std::vector& pubAttributes, std::vector& privAttributes, CK_OBJECT_HANDLE_PTR pubKey, CK_OBJECT_HANDLE_PTR privKey) { + { Lock l(d_slot->m()); size_t k; @@ -400,6 +400,7 @@ class Pkcs11Token { logError("C_GenerateKeyPair"); delete [] pubAttr; delete [] privAttr; + } if (d_err == 0) LoadAttributes();