summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-03 12:47:44 +0000
committerpneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-03 12:47:44 +0000
commitd09565c4c0e5277f043328824bf924d9baa34b27 (patch)
tree374f0c2ad74e82ced9c83e33fd4a5597cf7c31b0
parent970167dcbd3612acc143c569fa1c77cd23eaeb3d (diff)
downloadchromium_src-d09565c4c0e5277f043328824bf924d9baa34b27.zip
chromium_src-d09565c4c0e5277f043328824bf924d9baa34b27.tar.gz
chromium_src-d09565c4c0e5277f043328824bf924d9baa34b27.tar.bz2
Fix ScopedTestNSSDB for older NSS versions.
Before, if NSS version was < 3.15.1, then the ScopedTempDir was destructed without ScopedAllowIO and lead to a thread restriction violation. Now, the temp dir is not deleted in this case as the NSS DB is left open. BUG=210525 TBR=rsleevi@chromium.org Review URL: https://codereview.chromium.org/423363005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287257 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--crypto/scoped_test_nss_db.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/crypto/scoped_test_nss_db.cc b/crypto/scoped_test_nss_db.cc
index a3ff68b..452c26d 100644
--- a/crypto/scoped_test_nss_db.cc
+++ b/crypto/scoped_test_nss_db.cc
@@ -29,17 +29,22 @@ ScopedTestNSSDB::~ScopedTestNSSDB() {
// Don't close when NSS is < 3.15.1, because it would require an additional
// sleep for 1 second after closing the database, due to
// http://bugzil.la/875601.
- if (!NSS_VersionCheck("3.15.1") || !slot_)
+ if (!NSS_VersionCheck("3.15.1")) {
+ LOG(ERROR) << "NSS version is < 3.15.1, test DB will not be closed.";
+ temp_dir_.Take();
return;
+ }
// NSS is allowed to do IO on the current thread since dispatching
// to a dedicated thread would still have the affect of blocking
// the current thread, due to NSS's internal locking requirements
base::ThreadRestrictions::ScopedAllowIO allow_io;
- SECStatus status = SECMOD_CloseUserDB(slot_.get());
- if (status != SECSuccess)
- PLOG(ERROR) << "SECMOD_CloseUserDB failed: " << PORT_GetError();
+ if (slot_) {
+ SECStatus status = SECMOD_CloseUserDB(slot_.get());
+ if (status != SECSuccess)
+ PLOG(ERROR) << "SECMOD_CloseUserDB failed: " << PORT_GetError();
+ }
if (!temp_dir_.Delete())
LOG(ERROR) << "Could not delete temporary directory.";