| Index: crypto/nss_util.cc
|
| diff --git a/crypto/nss_util.cc b/crypto/nss_util.cc
|
| index 359f78fb87a89b172245fb6f127344547efb5dc0..4d97bbf99d597ea9e949691fd0a08ede48c398c8 100644
|
| --- a/crypto/nss_util.cc
|
| +++ b/crypto/nss_util.cc
|
| @@ -89,12 +89,22 @@ std::string GetNSSErrorMessage() {
|
| #if !defined(OS_CHROMEOS)
|
| base::FilePath GetDefaultConfigDirectory() {
|
| base::FilePath dir;
|
| - PathService::Get(base::DIR_HOME, &dir);
|
| - if (dir.empty()) {
|
| - LOG(ERROR) << "Failed to get home directory.";
|
| - return dir;
|
| +
|
| + std::unique_ptr<base::Environment> env(base::Environment::Create());
|
| + static const char kUseCacheEnvVar[] = "NSS_DEFAULT_DB_DIR";
|
| + std::string default_db_file;
|
| + if (env->GetVar(kUseCacheEnvVar, &default_db_file) &&
|
| + default_db_file.length() > 0) {
|
| + dir = base::FilePath(default_db_file);
|
| + } else {
|
| + PathService::Get(base::DIR_HOME, &dir);
|
| + if (dir.empty()) {
|
| + LOG(ERROR) << "Failed to get home directory.";
|
| + return dir;
|
| + }
|
| + dir = dir.AppendASCII(".pki").AppendASCII("nssdb");
|
| }
|
| - dir = dir.AppendASCII(".pki").AppendASCII("nssdb");
|
| +
|
| if (!base::CreateDirectory(dir)) {
|
| LOG(ERROR) << "Failed to create " << dir.value() << " directory.";
|
| dir.clear();
|
|
|