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 = | 52 const int kCreateReadWriteFilePermissions = |
53 base::PLATFORM_FILE_OPEN | | 53 base::PLATFORM_FILE_OPEN | |
54 base::PLATFORM_FILE_CREATE | | 54 base::PLATFORM_FILE_CREATE | |
55 base::PLATFORM_FILE_OPEN_ALWAYS | | 55 base::PLATFORM_FILE_OPEN_ALWAYS | |
56 base::PLATFORM_FILE_CREATE_ALWAYS | | 56 base::PLATFORM_FILE_CREATE_ALWAYS | |
57 base::PLATFORM_FILE_OPEN_TRUNCATED | | 57 base::PLATFORM_FILE_OPEN_TRUNCATED | |
58 base::PLATFORM_FILE_READ | | 58 base::PLATFORM_FILE_READ | |
59 base::PLATFORM_FILE_WRITE | | 59 base::PLATFORM_FILE_WRITE | |
60 base::PLATFORM_FILE_EXCLUSIVE_READ | | 60 base::PLATFORM_FILE_EXCLUSIVE_READ | |
61 base::PLATFORM_FILE_EXCLUSIVE_WRITE | | 61 base::PLATFORM_FILE_EXCLUSIVE_WRITE | |
62 base::PLATFORM_FILE_ASYNC | | 62 base::PLATFORM_FILE_ASYNC | |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
425 if (net::FileURLToFilePath(url, &path)) | 425 if (net::FileURLToFilePath(url, &path)) |
426 state->second->GrantRequestOfSpecificFile(path); | 426 state->second->GrantRequestOfSpecificFile(path); |
427 } | 427 } |
428 } | 428 } |
429 | 429 |
430 void ChildProcessSecurityPolicyImpl::GrantReadFile(int child_id, | 430 void ChildProcessSecurityPolicyImpl::GrantReadFile(int child_id, |
431 const base::FilePath& file) { | 431 const base::FilePath& file) { |
432 GrantPermissionsForFile(child_id, file, kReadFilePermissions); | 432 GrantPermissionsForFile(child_id, file, kReadFilePermissions); |
433 } | 433 } |
434 | 434 |
435 void ChildProcessSecurityPolicyImpl::GrantWriteFile( | |
vandebo (ex-Chrome)
2013/07/17 21:54:27
Are these currently used? I thought Greg's change
tommycli
2013/07/17 22:31:11
Done: Whoops, guess I got carried away by symmetry
| |
436 int child_id, | |
437 const base::FilePath& file) { | |
438 GrantPermissionsForFile(child_id, file, kWriteFilePermissions); | |
439 } | |
440 | |
441 void ChildProcessSecurityPolicyImpl::GrantCreateFile( | |
442 int child_id, | |
443 const base::FilePath& file) { | |
444 GrantPermissionsForFile(child_id, file, kCreateFilePermissions); | |
445 } | |
446 | |
435 void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFile( | 447 void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFile( |
436 int child_id, const base::FilePath& file) { | 448 int child_id, const base::FilePath& file) { |
437 GrantPermissionsForFile(child_id, file, kReadWriteFilePermissions); | 449 GrantPermissionsForFile(child_id, file, kCreateReadWriteFilePermissions); |
438 } | 450 } |
439 | 451 |
440 void ChildProcessSecurityPolicyImpl::GrantCreateWriteFile( | 452 void ChildProcessSecurityPolicyImpl::GrantCreateWriteFile( |
441 int child_id, const base::FilePath& file) { | 453 int child_id, const base::FilePath& file) { |
442 GrantPermissionsForFile(child_id, file, kCreateWriteFilePermissions); | 454 GrantPermissionsForFile(child_id, file, kCreateWriteFilePermissions); |
443 } | 455 } |
444 | 456 |
445 void ChildProcessSecurityPolicyImpl::GrantReadDirectory( | 457 void ChildProcessSecurityPolicyImpl::GrantReadDirectory( |
446 int child_id, const base::FilePath& directory) { | 458 int child_id, const base::FilePath& directory) { |
447 GrantPermissionsForFile(child_id, directory, kEnumerateDirectoryPermissions); | 459 GrantPermissionsForFile(child_id, directory, kEnumerateDirectoryPermissions); |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
594 // allowed to request the URL. | 606 // allowed to request the URL. |
595 return state->second->CanRequestURL(url); | 607 return state->second->CanRequestURL(url); |
596 } | 608 } |
597 } | 609 } |
598 | 610 |
599 bool ChildProcessSecurityPolicyImpl::CanReadFile(int child_id, | 611 bool ChildProcessSecurityPolicyImpl::CanReadFile(int child_id, |
600 const base::FilePath& file) { | 612 const base::FilePath& file) { |
601 return HasPermissionsForFile(child_id, file, kReadFilePermissions); | 613 return HasPermissionsForFile(child_id, file, kReadFilePermissions); |
602 } | 614 } |
603 | 615 |
616 bool ChildProcessSecurityPolicyImpl::CanWriteFile(int child_id, | |
617 const base::FilePath& file) { | |
618 return HasPermissionsForFile(child_id, file, kWriteFilePermissions); | |
619 } | |
620 | |
621 bool ChildProcessSecurityPolicyImpl::CanCreateFile(int child_id, | |
622 const base::FilePath& file) { | |
623 return HasPermissionsForFile(child_id, file, kCreateFilePermissions); | |
624 } | |
625 | |
626 bool ChildProcessSecurityPolicyImpl::CanCreateReadWriteFile( | |
627 int child_id, | |
628 const base::FilePath& file) { | |
629 return HasPermissionsForFile(child_id, file, kCreateReadWriteFilePermissions); | |
630 } | |
631 | |
604 bool ChildProcessSecurityPolicyImpl::CanReadDirectory( | 632 bool ChildProcessSecurityPolicyImpl::CanReadDirectory( |
605 int child_id, const base::FilePath& directory) { | 633 int child_id, const base::FilePath& directory) { |
606 return HasPermissionsForFile(child_id, | 634 return HasPermissionsForFile(child_id, |
607 directory, | 635 directory, |
608 kEnumerateDirectoryPermissions); | 636 kEnumerateDirectoryPermissions); |
609 } | 637 } |
610 | 638 |
611 bool ChildProcessSecurityPolicyImpl::CanReadFileSystem( | 639 bool ChildProcessSecurityPolicyImpl::CanReadFileSystem( |
612 int child_id, const std::string& filesystem_id) { | 640 int child_id, const std::string& filesystem_id) { |
613 return HasPermissionsForFileSystem(child_id, | 641 return HasPermissionsForFileSystem(child_id, |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
674 | 702 |
675 if (found->second & fileapi::FILE_PERMISSION_USE_FILE_PERMISSION) | 703 if (found->second & fileapi::FILE_PERMISSION_USE_FILE_PERMISSION) |
676 return HasPermissionsForFile(child_id, url.path(), permissions); | 704 return HasPermissionsForFile(child_id, url.path(), permissions); |
677 | 705 |
678 if (found->second & fileapi::FILE_PERMISSION_SANDBOX) | 706 if (found->second & fileapi::FILE_PERMISSION_SANDBOX) |
679 return true; | 707 return true; |
680 | 708 |
681 return false; | 709 return false; |
682 } | 710 } |
683 | 711 |
712 bool ChildProcessSecurityPolicyImpl::CanReadFileSystemFile( | |
713 int child_id, | |
714 const fileapi::FileSystemURL& url) { | |
715 return HasPermissionsForFileSystemFile(child_id, url, kReadFilePermissions); | |
716 } | |
717 | |
718 bool ChildProcessSecurityPolicyImpl::CanWriteFileSystemFile( | |
719 int child_id, | |
720 const fileapi::FileSystemURL& url) { | |
721 return HasPermissionsForFileSystemFile(child_id, url, kWriteFilePermissions); | |
722 } | |
723 | |
724 bool ChildProcessSecurityPolicyImpl::CanCreateFileSystemFile( | |
725 int child_id, | |
726 const fileapi::FileSystemURL& url) { | |
727 return HasPermissionsForFileSystemFile(child_id, url, kCreateFilePermissions); | |
728 } | |
729 | |
730 bool ChildProcessSecurityPolicyImpl::CanCreateReadWriteFileSystemFile( | |
731 int child_id, | |
732 const fileapi::FileSystemURL& url) { | |
733 return HasPermissionsForFileSystemFile(child_id, url, | |
734 kCreateReadWriteFilePermissions); | |
735 } | |
736 | |
684 bool ChildProcessSecurityPolicyImpl::HasWebUIBindings(int child_id) { | 737 bool ChildProcessSecurityPolicyImpl::HasWebUIBindings(int child_id) { |
685 base::AutoLock lock(lock_); | 738 base::AutoLock lock(lock_); |
686 | 739 |
687 SecurityStateMap::iterator state = security_state_.find(child_id); | 740 SecurityStateMap::iterator state = security_state_.find(child_id); |
688 if (state == security_state_.end()) | 741 if (state == security_state_.end()) |
689 return false; | 742 return false; |
690 | 743 |
691 return state->second->has_web_ui_bindings(); | 744 return state->second->has_web_ui_bindings(); |
692 } | 745 } |
693 | 746 |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
771 } | 824 } |
772 | 825 |
773 void ChildProcessSecurityPolicyImpl::RegisterFileSystemPermissionPolicy( | 826 void ChildProcessSecurityPolicyImpl::RegisterFileSystemPermissionPolicy( |
774 fileapi::FileSystemType type, | 827 fileapi::FileSystemType type, |
775 int policy) { | 828 int policy) { |
776 base::AutoLock lock(lock_); | 829 base::AutoLock lock(lock_); |
777 file_system_policy_map_[type] = policy; | 830 file_system_policy_map_[type] = policy; |
778 } | 831 } |
779 | 832 |
780 } // namespace content | 833 } // namespace content |
OLD | NEW |