| 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/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 base::PLATFORM_FILE_ASYNC | | 42 base::PLATFORM_FILE_ASYNC | |
| 43 base::PLATFORM_FILE_WRITE_ATTRIBUTES; | 43 base::PLATFORM_FILE_WRITE_ATTRIBUTES; |
| 44 | 44 |
| 45 const int kCreateFilePermissions = | 45 const int kCreateFilePermissions = |
| 46 base::PLATFORM_FILE_CREATE; | 46 base::PLATFORM_FILE_CREATE; |
| 47 | 47 |
| 48 const int kEnumerateDirectoryPermissions = | 48 const int kEnumerateDirectoryPermissions = |
| 49 kReadFilePermissions | | 49 kReadFilePermissions | |
| 50 base::PLATFORM_FILE_ENUMERATE; | 50 base::PLATFORM_FILE_ENUMERATE; |
| 51 | 51 |
| 52 const int kReadWriteFilePermissions = |
| 53 base::PLATFORM_FILE_OPEN | |
| 54 base::PLATFORM_FILE_CREATE | |
| 55 base::PLATFORM_FILE_OPEN_ALWAYS | |
| 56 base::PLATFORM_FILE_CREATE_ALWAYS | |
| 57 base::PLATFORM_FILE_OPEN_TRUNCATED | |
| 58 base::PLATFORM_FILE_READ | |
| 59 base::PLATFORM_FILE_WRITE | |
| 60 base::PLATFORM_FILE_EXCLUSIVE_READ | |
| 61 base::PLATFORM_FILE_EXCLUSIVE_WRITE | |
| 62 base::PLATFORM_FILE_ASYNC | |
| 63 base::PLATFORM_FILE_WRITE_ATTRIBUTES; |
| 64 |
| 65 const int kCreateWriteFilePermissions = |
| 66 base::PLATFORM_FILE_CREATE | |
| 67 base::PLATFORM_FILE_CREATE_ALWAYS | |
| 68 base::PLATFORM_FILE_OPEN | |
| 69 base::PLATFORM_FILE_OPEN_ALWAYS | |
| 70 base::PLATFORM_FILE_OPEN_TRUNCATED | |
| 71 base::PLATFORM_FILE_WRITE | |
| 72 base::PLATFORM_FILE_WRITE_ATTRIBUTES | |
| 73 base::PLATFORM_FILE_ASYNC; |
| 74 // need EXCLUSIVE_WRITE in this mix? |
| 75 |
| 52 } // namespace | 76 } // namespace |
| 53 | 77 |
| 54 // The SecurityState class is used to maintain per-child process security state | 78 // The SecurityState class is used to maintain per-child process security state |
| 55 // information. | 79 // information. |
| 56 class ChildProcessSecurityPolicyImpl::SecurityState { | 80 class ChildProcessSecurityPolicyImpl::SecurityState { |
| 57 public: | 81 public: |
| 58 SecurityState() | 82 SecurityState() |
| 59 : enabled_bindings_(0), | 83 : enabled_bindings_(0), |
| 60 can_read_raw_cookies_(false) { } | 84 can_read_raw_cookies_(false) { } |
| 61 | 85 |
| (...skipping 339 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 401 if (net::FileURLToFilePath(url, &path)) | 425 if (net::FileURLToFilePath(url, &path)) |
| 402 state->second->GrantRequestOfSpecificFile(path); | 426 state->second->GrantRequestOfSpecificFile(path); |
| 403 } | 427 } |
| 404 } | 428 } |
| 405 | 429 |
| 406 void ChildProcessSecurityPolicyImpl::GrantReadFile(int child_id, | 430 void ChildProcessSecurityPolicyImpl::GrantReadFile(int child_id, |
| 407 const base::FilePath& file) { | 431 const base::FilePath& file) { |
| 408 GrantPermissionsForFile(child_id, file, kReadFilePermissions); | 432 GrantPermissionsForFile(child_id, file, kReadFilePermissions); |
| 409 } | 433 } |
| 410 | 434 |
| 435 void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFile( |
| 436 int child_id, const base::FilePath& file) { |
| 437 GrantPermissionsForFile(child_id, file, kReadWriteFilePermissions); |
| 438 } |
| 439 |
| 440 void ChildProcessSecurityPolicyImpl::GrantCreateWriteFile( |
| 441 int child_id, const base::FilePath& file) { |
| 442 GrantPermissionsForFile(child_id, file, kCreateWriteFilePermissions); |
| 443 } |
| 444 |
| 411 void ChildProcessSecurityPolicyImpl::GrantReadDirectory( | 445 void ChildProcessSecurityPolicyImpl::GrantReadDirectory( |
| 412 int child_id, const base::FilePath& directory) { | 446 int child_id, const base::FilePath& directory) { |
| 413 GrantPermissionsForFile(child_id, directory, kEnumerateDirectoryPermissions); | 447 GrantPermissionsForFile(child_id, directory, kEnumerateDirectoryPermissions); |
| 414 } | 448 } |
| 415 | 449 |
| 416 void ChildProcessSecurityPolicyImpl::GrantPermissionsForFile( | 450 void ChildProcessSecurityPolicyImpl::GrantPermissionsForFile( |
| 417 int child_id, const base::FilePath& file, int permissions) { | 451 int child_id, const base::FilePath& file, int permissions) { |
| 418 base::AutoLock lock(lock_); | 452 base::AutoLock lock(lock_); |
| 419 | 453 |
| 420 SecurityStateMap::iterator state = security_state_.find(child_id); | 454 SecurityStateMap::iterator state = security_state_.find(child_id); |
| (...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 737 } | 771 } |
| 738 | 772 |
| 739 void ChildProcessSecurityPolicyImpl::RegisterFileSystemPermissionPolicy( | 773 void ChildProcessSecurityPolicyImpl::RegisterFileSystemPermissionPolicy( |
| 740 fileapi::FileSystemType type, | 774 fileapi::FileSystemType type, |
| 741 int policy) { | 775 int policy) { |
| 742 base::AutoLock lock(lock_); | 776 base::AutoLock lock(lock_); |
| 743 file_system_policy_map_[type] = policy; | 777 file_system_policy_map_[type] = policy; |
| 744 } | 778 } |
| 745 | 779 |
| 746 } // namespace content | 780 } // namespace content |
| OLD | NEW |