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

Side by Side Diff: content/browser/child_process_security_policy_impl.cc

Issue 19599006: ChildProcessSecurityPolicy: Deprecate bitmask-based permissions checks for files. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change CanCreateReadWrite to CanCreateWrite Created 7 years, 5 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
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 "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
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 kReadFilePermissions |
54 base::PLATFORM_FILE_CREATE | 54 kWriteFilePermissions |
55 kCreateFilePermissions |
55 base::PLATFORM_FILE_OPEN_ALWAYS | 56 base::PLATFORM_FILE_OPEN_ALWAYS |
56 base::PLATFORM_FILE_CREATE_ALWAYS | 57 base::PLATFORM_FILE_CREATE_ALWAYS |
57 base::PLATFORM_FILE_OPEN_TRUNCATED | 58 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 59
65 const int kCreateWriteFilePermissions = 60 const int kCreateWriteFilePermissions =
66 base::PLATFORM_FILE_CREATE | 61 kWriteFilePermissions |
67 base::PLATFORM_FILE_CREATE_ALWAYS | 62 kCreateFilePermissions |
68 base::PLATFORM_FILE_OPEN | 63 base::PLATFORM_FILE_OPEN_ALWAYS |
69 base::PLATFORM_FILE_OPEN_ALWAYS | 64 base::PLATFORM_FILE_CREATE_ALWAYS |
70 base::PLATFORM_FILE_OPEN_TRUNCATED | 65 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?
tommycli 2013/07/22 19:39:24 security: I did in fact add EXCLUSIVE_WRITE here,
75 66
76 } // namespace 67 } // namespace
77 68
78 // The SecurityState class is used to maintain per-child process security state 69 // The SecurityState class is used to maintain per-child process security state
79 // information. 70 // information.
80 class ChildProcessSecurityPolicyImpl::SecurityState { 71 class ChildProcessSecurityPolicyImpl::SecurityState {
81 public: 72 public:
82 SecurityState() 73 SecurityState()
83 : enabled_bindings_(0), 74 : enabled_bindings_(0),
84 can_read_raw_cookies_(false) { } 75 can_read_raw_cookies_(false) { }
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after
427 } 418 }
428 } 419 }
429 420
430 void ChildProcessSecurityPolicyImpl::GrantReadFile(int child_id, 421 void ChildProcessSecurityPolicyImpl::GrantReadFile(int child_id,
431 const base::FilePath& file) { 422 const base::FilePath& file) {
432 GrantPermissionsForFile(child_id, file, kReadFilePermissions); 423 GrantPermissionsForFile(child_id, file, kReadFilePermissions);
433 } 424 }
434 425
435 void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFile( 426 void ChildProcessSecurityPolicyImpl::GrantCreateReadWriteFile(
436 int child_id, const base::FilePath& file) { 427 int child_id, const base::FilePath& file) {
437 GrantPermissionsForFile(child_id, file, kReadWriteFilePermissions); 428 GrantPermissionsForFile(child_id, file, kCreateReadWriteFilePermissions);
438 } 429 }
439 430
440 void ChildProcessSecurityPolicyImpl::GrantCreateWriteFile( 431 void ChildProcessSecurityPolicyImpl::GrantCreateWriteFile(
441 int child_id, const base::FilePath& file) { 432 int child_id, const base::FilePath& file) {
442 GrantPermissionsForFile(child_id, file, kCreateWriteFilePermissions); 433 GrantPermissionsForFile(child_id, file, kCreateWriteFilePermissions);
443 } 434 }
444 435
445 void ChildProcessSecurityPolicyImpl::GrantReadDirectory( 436 void ChildProcessSecurityPolicyImpl::GrantReadDirectory(
446 int child_id, const base::FilePath& directory) { 437 int child_id, const base::FilePath& directory) {
447 GrantPermissionsForFile(child_id, directory, kEnumerateDirectoryPermissions); 438 GrantPermissionsForFile(child_id, directory, kEnumerateDirectoryPermissions);
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
594 // allowed to request the URL. 585 // allowed to request the URL.
595 return state->second->CanRequestURL(url); 586 return state->second->CanRequestURL(url);
596 } 587 }
597 } 588 }
598 589
599 bool ChildProcessSecurityPolicyImpl::CanReadFile(int child_id, 590 bool ChildProcessSecurityPolicyImpl::CanReadFile(int child_id,
600 const base::FilePath& file) { 591 const base::FilePath& file) {
601 return HasPermissionsForFile(child_id, file, kReadFilePermissions); 592 return HasPermissionsForFile(child_id, file, kReadFilePermissions);
602 } 593 }
603 594
595 bool ChildProcessSecurityPolicyImpl::CanWriteFile(int child_id,
596 const base::FilePath& file) {
597 return HasPermissionsForFile(child_id, file, kWriteFilePermissions);
598 }
599
600 bool ChildProcessSecurityPolicyImpl::CanCreateFile(int child_id,
601 const base::FilePath& file) {
602 return HasPermissionsForFile(child_id, file, kCreateFilePermissions);
603 }
604
605 bool ChildProcessSecurityPolicyImpl::CanCreateWriteFile(
606 int child_id,
607 const base::FilePath& file) {
608 return HasPermissionsForFile(child_id, file, kCreateWriteFilePermissions);
609 }
610
604 bool ChildProcessSecurityPolicyImpl::CanReadDirectory( 611 bool ChildProcessSecurityPolicyImpl::CanReadDirectory(
605 int child_id, const base::FilePath& directory) { 612 int child_id, const base::FilePath& directory) {
606 return HasPermissionsForFile(child_id, 613 return HasPermissionsForFile(child_id,
607 directory, 614 directory,
608 kEnumerateDirectoryPermissions); 615 kEnumerateDirectoryPermissions);
609 } 616 }
610 617
611 bool ChildProcessSecurityPolicyImpl::CanReadFileSystem( 618 bool ChildProcessSecurityPolicyImpl::CanReadFileSystem(
612 int child_id, const std::string& filesystem_id) { 619 int child_id, const std::string& filesystem_id) {
613 return HasPermissionsForFileSystem(child_id, 620 return HasPermissionsForFileSystem(child_id,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 681
675 if (found->second & fileapi::FILE_PERMISSION_USE_FILE_PERMISSION) 682 if (found->second & fileapi::FILE_PERMISSION_USE_FILE_PERMISSION)
676 return HasPermissionsForFile(child_id, url.path(), permissions); 683 return HasPermissionsForFile(child_id, url.path(), permissions);
677 684
678 if (found->second & fileapi::FILE_PERMISSION_SANDBOX) 685 if (found->second & fileapi::FILE_PERMISSION_SANDBOX)
679 return true; 686 return true;
680 687
681 return false; 688 return false;
682 } 689 }
683 690
691 bool ChildProcessSecurityPolicyImpl::CanReadFileSystemFile(
692 int child_id,
693 const fileapi::FileSystemURL& url) {
694 return HasPermissionsForFileSystemFile(child_id, url, kReadFilePermissions);
695 }
696
697 bool ChildProcessSecurityPolicyImpl::CanWriteFileSystemFile(
698 int child_id,
699 const fileapi::FileSystemURL& url) {
700 return HasPermissionsForFileSystemFile(child_id, url, kWriteFilePermissions);
701 }
702
703 bool ChildProcessSecurityPolicyImpl::CanCreateFileSystemFile(
704 int child_id,
705 const fileapi::FileSystemURL& url) {
706 return HasPermissionsForFileSystemFile(child_id, url, kCreateFilePermissions);
707 }
708
709 bool ChildProcessSecurityPolicyImpl::CanCreateWriteFileSystemFile(
710 int child_id,
711 const fileapi::FileSystemURL& url) {
712 return HasPermissionsForFileSystemFile(child_id, url,
713 kCreateWriteFilePermissions);
714 }
715
684 bool ChildProcessSecurityPolicyImpl::HasWebUIBindings(int child_id) { 716 bool ChildProcessSecurityPolicyImpl::HasWebUIBindings(int child_id) {
685 base::AutoLock lock(lock_); 717 base::AutoLock lock(lock_);
686 718
687 SecurityStateMap::iterator state = security_state_.find(child_id); 719 SecurityStateMap::iterator state = security_state_.find(child_id);
688 if (state == security_state_.end()) 720 if (state == security_state_.end())
689 return false; 721 return false;
690 722
691 return state->second->has_web_ui_bindings(); 723 return state->second->has_web_ui_bindings();
692 } 724 }
693 725
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 } 803 }
772 804
773 void ChildProcessSecurityPolicyImpl::RegisterFileSystemPermissionPolicy( 805 void ChildProcessSecurityPolicyImpl::RegisterFileSystemPermissionPolicy(
774 fileapi::FileSystemType type, 806 fileapi::FileSystemType type,
775 int policy) { 807 int policy) {
776 base::AutoLock lock(lock_); 808 base::AutoLock lock(lock_);
777 file_system_policy_map_[type] = policy; 809 file_system_policy_map_[type] = policy;
778 } 810 }
779 811
780 } // namespace content 812 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/child_process_security_policy_impl.h ('k') | content/browser/child_process_security_policy_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698