| Index: chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| diff --git a/chrome/browser/extensions/sandboxed_extension_unpacker.cc b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| index eda5e3f1cbe6d0932151ac95d7646cde2d83b58c..c0876490cca7dcb4b5213e354dc468569ef06104 100644
|
| --- a/chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| +++ b/chrome/browser/extensions/sandboxed_extension_unpacker.cc
|
| @@ -42,8 +42,18 @@ void SandboxedExtensionUnpacker::Start() {
|
| // file IO on.
|
| CHECK(ChromeThread::GetCurrentThreadIdentifier(&thread_identifier_));
|
|
|
| + // To understand crbug/35198, allow users who can reproduce the bug
|
| + // to loosen permissions on the scoped directory.
|
| + bool loosen_permissions = false;
|
| +#if defined (OS_WIN)
|
| + loosen_permissions = CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kIssue35198Permission);
|
| + LOG(INFO) << "loosen_permissions = " << loosen_permissions;
|
| +#endif
|
| +
|
| // Create a temporary directory to work in.
|
| - if (!temp_dir_.CreateUniqueTempDirUnderPath(temp_path_)) {
|
| + if (!temp_dir_.CreateUniqueTempDirUnderPath(temp_path_,
|
| + loosen_permissions)) {
|
| ReportFailure("Could not create temporary directory.");
|
| return;
|
| }
|
| @@ -52,6 +62,15 @@ void SandboxedExtensionUnpacker::Start() {
|
| extension_root_ = temp_dir_.path().AppendASCII(
|
| extension_filenames::kTempExtensionName);
|
|
|
| + // To understand crbug/35198, allow users who can reproduce the bug to
|
| + // create the unpack directory in the browser process.
|
| + bool crxdir_in_browser = CommandLine::ForCurrentProcess()->HasSwitch(
|
| + switches::kIssue35198CrxDirBrowser);
|
| + LOG(INFO) << "crxdir_in_browser = " << crxdir_in_browser;
|
| + if (crxdir_in_browser && !file_util::CreateDirectory(extension_root_)) {
|
| + LOG(ERROR) << "Failed to create directory " << extension_root_.value();
|
| + }
|
| +
|
| // Extract the public key and validate the package.
|
| if (!ValidateSignature())
|
| return; // ValidateSignature() already reported the error.
|
| @@ -69,9 +88,6 @@ void SandboxedExtensionUnpacker::Start() {
|
| // the link will cause file system access outside the sandbox path.
|
| FilePath normalized_crx_path;
|
| if (!file_util::NormalizeFilePath(temp_crx_path, &normalized_crx_path)) {
|
| - // TODO(skerner): Remove this logging once crbug/13044 is fixed.
|
| - // This bug is starred by many users who have some kind of link.
|
| - // If NormalizeFilePath() fails we want to see it in the logs they send.
|
| LOG(ERROR) << "Could not get the normalized path of "
|
| << temp_crx_path.value();
|
| normalized_crx_path = temp_crx_path;
|
|
|