| Index: content/browser/child_process_security_policy.cc
|
| ===================================================================
|
| --- content/browser/child_process_security_policy.cc (revision 79702)
|
| +++ content/browser/child_process_security_policy.cc (working copy)
|
| @@ -20,6 +20,10 @@
|
| base::PLATFORM_FILE_EXCLUSIVE_READ |
|
| base::PLATFORM_FILE_ASYNC;
|
|
|
| +static const int kEnumerateDirectoryPermissions =
|
| + kReadFilePermissions |
|
| + base::PLATFORM_FILE_ENUMERATE;
|
| +
|
| // The SecurityState class is used to maintain per-child process security state
|
| // information.
|
| class ChildProcessSecurityPolicy::SecurityState {
|
| @@ -241,6 +245,11 @@
|
| GrantPermissionsForFile(child_id, file, kReadFilePermissions);
|
| }
|
|
|
| +void ChildProcessSecurityPolicy::GrantReadDirectory(int child_id,
|
| + const FilePath& directory) {
|
| + GrantPermissionsForFile(child_id, directory, kEnumerateDirectoryPermissions);
|
| +}
|
| +
|
| void ChildProcessSecurityPolicy::GrantPermissionsForFile(
|
| int child_id, const FilePath& file, int permissions) {
|
| base::AutoLock lock(lock_);
|
| @@ -372,6 +381,13 @@
|
| return HasPermissionsForFile(child_id, file, kReadFilePermissions);
|
| }
|
|
|
| +bool ChildProcessSecurityPolicy::CanReadDirectory(int child_id,
|
| + const FilePath& directory) {
|
| + return HasPermissionsForFile(child_id,
|
| + directory,
|
| + kEnumerateDirectoryPermissions);
|
| +}
|
| +
|
| bool ChildProcessSecurityPolicy::HasPermissionsForFile(
|
| int child_id, const FilePath& file, int permissions) {
|
| base::AutoLock lock(lock_);
|
|
|