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

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: Also add FileSystemURL based methods. 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 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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698