| OLD | NEW |
| 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 "content/browser/child_process_security_policy_impl.h" | 5 #include "content/browser/child_process_security_policy_impl.h" |
| 6 | 6 |
| 7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/metrics/histogram.h" | 9 #include "base/metrics/histogram.h" |
| 10 #include "base/platform_file.h" | 10 #include "base/platform_file.h" |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 518 kEnumerateDirectoryPermissions); | 518 kEnumerateDirectoryPermissions); |
| 519 } | 519 } |
| 520 | 520 |
| 521 bool ChildProcessSecurityPolicyImpl::CanReadFileSystem( | 521 bool ChildProcessSecurityPolicyImpl::CanReadFileSystem( |
| 522 int child_id, const std::string& filesystem_id) { | 522 int child_id, const std::string& filesystem_id) { |
| 523 return HasPermissionsForFileSystem(child_id, | 523 return HasPermissionsForFileSystem(child_id, |
| 524 filesystem_id, | 524 filesystem_id, |
| 525 kReadFilePermissions); | 525 kReadFilePermissions); |
| 526 } | 526 } |
| 527 | 527 |
| 528 bool ChildProcessSecurityPolicyImpl::CanReadWriteFileSystem( |
| 529 int child_id, const std::string& filesystem_id) { |
| 530 return HasPermissionsForFileSystem(child_id, |
| 531 filesystem_id, |
| 532 kReadFilePermissions | |
| 533 kWriteFilePermissions); |
| 534 } |
| 535 |
| 528 bool ChildProcessSecurityPolicyImpl::HasPermissionsForFile( | 536 bool ChildProcessSecurityPolicyImpl::HasPermissionsForFile( |
| 529 int child_id, const FilePath& file, int permissions) { | 537 int child_id, const FilePath& file, int permissions) { |
| 530 base::AutoLock lock(lock_); | 538 base::AutoLock lock(lock_); |
| 531 bool result = ChildProcessHasPermissionsForFile(child_id, file, permissions); | 539 bool result = ChildProcessHasPermissionsForFile(child_id, file, permissions); |
| 532 if (!result) { | 540 if (!result) { |
| 533 // If this is a worker thread that has no access to a given file, | 541 // If this is a worker thread that has no access to a given file, |
| 534 // let's check that its renderer process has access to that file instead. | 542 // let's check that its renderer process has access to that file instead. |
| 535 WorkerToMainProcessMap::iterator iter = worker_map_.find(child_id); | 543 WorkerToMainProcessMap::iterator iter = worker_map_.find(child_id); |
| 536 if (iter != worker_map_.end() && iter->second != 0) { | 544 if (iter != worker_map_.end() && iter->second != 0) { |
| 537 result = ChildProcessHasPermissionsForFile(iter->second, | 545 result = ChildProcessHasPermissionsForFile(iter->second, |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 int child_id, | 622 int child_id, |
| 615 const std::string& filesystem_id, | 623 const std::string& filesystem_id, |
| 616 int permission) { | 624 int permission) { |
| 617 base::AutoLock lock(lock_); | 625 base::AutoLock lock(lock_); |
| 618 | 626 |
| 619 SecurityStateMap::iterator state = security_state_.find(child_id); | 627 SecurityStateMap::iterator state = security_state_.find(child_id); |
| 620 if (state == security_state_.end()) | 628 if (state == security_state_.end()) |
| 621 return false; | 629 return false; |
| 622 return state->second->HasPermissionsForFileSystem(filesystem_id, permission); | 630 return state->second->HasPermissionsForFileSystem(filesystem_id, permission); |
| 623 } | 631 } |
| OLD | NEW |