Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: chrome/common/chrome_content_client.cc

Issue 2357393003: Add check for file system access to the sandbox. (Closed)
Patch Set: Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/chrome_content_client.h" 5 #include "chrome/common/chrome_content_client.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 #include <sys/stat.h>
8 9
9 #include <map> 10 #include <map>
10 #include <memory> 11 #include <memory>
11 #include <tuple> 12 #include <tuple>
12 13
13 #include "base/command_line.h" 14 #include "base/command_line.h"
14 #include "base/debug/crash_logging.h" 15 #include "base/debug/crash_logging.h"
15 #include "base/files/file_util.h" 16 #include "base/files/file_util.h"
16 #include "base/json/json_reader.h" 17 #include "base/json/json_reader.h"
17 #include "base/memory/ptr_util.h" 18 #include "base/memory/ptr_util.h"
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 std::string flash_version = 293 std::string flash_version =
293 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 294 base::CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
294 switches::kPpapiFlashVersion); 295 switches::kPpapiFlashVersion);
295 296
296 plugins->push_back( 297 plugins->push_back(
297 CreatePepperFlashInfo(base::FilePath(flash_path), 298 CreatePepperFlashInfo(base::FilePath(flash_path),
298 flash_version, false, true, false)); 299 flash_version, false, true, false));
299 } 300 }
300 301
301 #if defined(OS_LINUX) 302 #if defined(OS_LINUX)
302 // This function tests if DIR_USER_DATA can be accessed, as a simple check to 303 // This function tests if DIR_USER_DATA can be accessed, as a simple check to
rickyz (no longer on Chrome) 2016/09/22 17:31:15 Update the comment as well.
303 // see if the zygote has been sandboxed at this point. 304 // see if the zygote has been sandboxed at this point.
304 bool IsUserDataDirAvailable() { 305 bool IsSandboxed() {
305 base::FilePath user_data_dir; 306 struct stat st;
306 return PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); 307 return stat("/proc/self/exe", &st) == -1;
307 } 308 }
308 309
309 // This method is used on Linux only because of architectural differences in how 310 // This method is used on Linux only because of architectural differences in how
310 // it loads the component updated flash plugin, and not because the other 311 // it loads the component updated flash plugin, and not because the other
311 // platforms do not support component updated flash. On other platforms, the 312 // platforms do not support component updated flash. On other platforms, the
312 // component updater sends an IPC message to all threads, at undefined points in 313 // component updater sends an IPC message to all threads, at undefined points in
313 // time, with the URL of the component updated flash. Because the linux zygote 314 // time, with the URL of the component updated flash. Because the linux zygote
314 // thread has no access to the file system after it warms up, it must preload 315 // thread has no access to the file system after it warms up, it must preload
315 // the component updated flash. 316 // the component updated flash.
316 bool GetComponentUpdatedPepperFlash(content::PepperPluginInfo* plugin) { 317 bool GetComponentUpdatedPepperFlash(content::PepperPluginInfo* plugin) {
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 std::vector<content::PepperPluginInfo>* plugins) { 487 std::vector<content::PepperPluginInfo>* plugins) {
487 #if defined(ENABLE_PLUGINS) 488 #if defined(ENABLE_PLUGINS)
488 ComputeBuiltInPlugins(plugins); 489 ComputeBuiltInPlugins(plugins);
489 AddPepperFlashFromCommandLine(plugins); 490 AddPepperFlashFromCommandLine(plugins);
490 491
491 #if defined(OS_LINUX) 492 #if defined(OS_LINUX)
492 // Depending on the sandbox configurtion, the user data directory 493 // Depending on the sandbox configurtion, the user data directory
493 // is not always available. If it is not available, do not try and load any 494 // is not always available. If it is not available, do not try and load any
494 // flash plugin. The flash player, if any, preloaded before the sandbox 495 // flash plugin. The flash player, if any, preloaded before the sandbox
495 // initialization will continue to be used. 496 // initialization will continue to be used.
496 if (!IsUserDataDirAvailable()) { 497 if (IsSandboxed()) {
497 return; 498 return;
498 } 499 }
499 #endif // defined(OS_LINUX) 500 #endif // defined(OS_LINUX)
500 501
501 ScopedVector<content::PepperPluginInfo> flash_versions; 502 ScopedVector<content::PepperPluginInfo> flash_versions;
502 503
503 #if defined(OS_LINUX) 504 #if defined(OS_LINUX)
504 std::unique_ptr<content::PepperPluginInfo> component_flash( 505 std::unique_ptr<content::PepperPluginInfo> component_flash(
505 new content::PepperPluginInfo); 506 new content::PepperPluginInfo);
506 if (GetComponentUpdatedPepperFlash(component_flash.get())) 507 if (GetComponentUpdatedPepperFlash(component_flash.get()))
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 if (!origin_trial_policy_) 688 if (!origin_trial_policy_)
688 origin_trial_policy_ = base::MakeUnique<ChromeOriginTrialPolicy>(); 689 origin_trial_policy_ = base::MakeUnique<ChromeOriginTrialPolicy>();
689 return origin_trial_policy_.get(); 690 return origin_trial_policy_.get();
690 } 691 }
691 692
692 #if defined(OS_ANDROID) 693 #if defined(OS_ANDROID)
693 media::MediaClientAndroid* ChromeContentClient::GetMediaClientAndroid() { 694 media::MediaClientAndroid* ChromeContentClient::GetMediaClientAndroid() {
694 return new ChromeMediaClientAndroid(); 695 return new ChromeMediaClientAndroid();
695 } 696 }
696 #endif // OS_ANDROID 697 #endif // OS_ANDROID
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698