| Index: content/browser/child_process_security_policy_unittest.cc
|
| ===================================================================
|
| --- content/browser/child_process_security_policy_unittest.cc (revision 174890)
|
| +++ content/browser/child_process_security_policy_unittest.cc (working copy)
|
| @@ -20,6 +20,12 @@
|
| const int kRendererID = 42;
|
| const int kWorkerRendererID = kRendererID + 1;
|
|
|
| +#if defined(FILE_PATH_USES_DRIVE_LETTERS)
|
| +#define TEST_PATH(x) FILE_PATH_LITERAL("c:") FILE_PATH_LITERAL(x)
|
| +#else
|
| +#define TEST_PATH(x) FILE_PATH_LITERAL(x)
|
| +#endif
|
| +
|
| class ChildProcessSecurityPolicyTestBrowserClient
|
| : public TestContentBrowserClient {
|
| public:
|
| @@ -294,21 +300,16 @@
|
|
|
| p->Add(kRendererID);
|
|
|
| - EXPECT_FALSE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/passwd"))));
|
| - p->GrantReadFile(kRendererID, FilePath(FILE_PATH_LITERAL("/etc/passwd")));
|
| - EXPECT_TRUE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/passwd"))));
|
| - EXPECT_FALSE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/shadow"))));
|
| + EXPECT_FALSE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/passwd"))));
|
| + p->GrantReadFile(kRendererID, FilePath(TEST_PATH("/etc/passwd")));
|
| + EXPECT_TRUE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/passwd"))));
|
| + EXPECT_FALSE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/shadow"))));
|
|
|
| p->Remove(kRendererID);
|
| p->Add(kRendererID);
|
|
|
| - EXPECT_FALSE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/passwd"))));
|
| - EXPECT_FALSE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/shadow"))));
|
| + EXPECT_FALSE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/passwd"))));
|
| + EXPECT_FALSE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/shadow"))));
|
|
|
| p->Remove(kRendererID);
|
| }
|
| @@ -319,49 +320,40 @@
|
|
|
| p->Add(kRendererID);
|
|
|
| - EXPECT_FALSE(p->CanReadDirectory(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/"))));
|
| - p->GrantReadDirectory(kRendererID, FilePath(FILE_PATH_LITERAL("/etc/")));
|
| - EXPECT_TRUE(p->CanReadDirectory(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/"))));
|
| - EXPECT_TRUE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/passwd"))));
|
| + EXPECT_FALSE(p->CanReadDirectory(kRendererID, FilePath(TEST_PATH("/etc/"))));
|
| + p->GrantReadDirectory(kRendererID, FilePath(TEST_PATH("/etc/")));
|
| + EXPECT_TRUE(p->CanReadDirectory(kRendererID, FilePath(TEST_PATH("/etc/"))));
|
| + EXPECT_TRUE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/passwd"))));
|
|
|
| p->Remove(kRendererID);
|
| p->Add(kRendererID);
|
|
|
| - EXPECT_FALSE(p->CanReadDirectory(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/"))));
|
| - EXPECT_FALSE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/passwd"))));
|
| + EXPECT_FALSE(p->CanReadDirectory(kRendererID, FilePath(TEST_PATH("/etc/"))));
|
| + EXPECT_FALSE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/passwd"))));
|
|
|
| // Just granting read permission as a file doesn't imply reading as a
|
| // directory.
|
| - p->GrantReadFile(kRendererID, FilePath(FILE_PATH_LITERAL("/etc/")));
|
| - EXPECT_TRUE(p->CanReadFile(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/passwd"))));
|
| - EXPECT_FALSE(p->CanReadDirectory(kRendererID,
|
| - FilePath(FILE_PATH_LITERAL("/etc/"))));
|
| + p->GrantReadFile(kRendererID, FilePath(TEST_PATH("/etc/")));
|
| + EXPECT_TRUE(p->CanReadFile(kRendererID, FilePath(TEST_PATH("/etc/passwd"))));
|
| + EXPECT_FALSE(p->CanReadDirectory(kRendererID, FilePath(TEST_PATH("/etc/"))));
|
|
|
| p->Remove(kRendererID);
|
| }
|
|
|
| TEST_F(ChildProcessSecurityPolicyTest, FilePermissions) {
|
| - FilePath granted_file = FilePath(FILE_PATH_LITERAL("/home/joe"));
|
| - FilePath sibling_file = FilePath(FILE_PATH_LITERAL("/home/bob"));
|
| - FilePath child_file = FilePath(FILE_PATH_LITERAL("/home/joe/file"));
|
| - FilePath parent_file = FilePath(FILE_PATH_LITERAL("/home"));
|
| - FilePath parent_slash_file = FilePath(FILE_PATH_LITERAL("/home/"));
|
| - FilePath child_traversal1 = FilePath(
|
| - FILE_PATH_LITERAL("/home/joe/././file"));
|
| + FilePath granted_file = FilePath(TEST_PATH("/home/joe"));
|
| + FilePath sibling_file = FilePath(TEST_PATH("/home/bob"));
|
| + FilePath child_file = FilePath(TEST_PATH("/home/joe/file"));
|
| + FilePath parent_file = FilePath(TEST_PATH("/home"));
|
| + FilePath parent_slash_file = FilePath(TEST_PATH("/home/"));
|
| + FilePath child_traversal1 = FilePath(TEST_PATH("/home/joe/././file"));
|
| FilePath child_traversal2 = FilePath(
|
| - FILE_PATH_LITERAL("/home/joe/file/../otherfile"));
|
| - FilePath evil_traversal1 = FilePath(
|
| - FILE_PATH_LITERAL("/home/joe/../../etc/passwd"));
|
| + TEST_PATH("/home/joe/file/../otherfile"));
|
| + FilePath evil_traversal1 = FilePath(TEST_PATH("/home/joe/../../etc/passwd"));
|
| FilePath evil_traversal2 = FilePath(
|
| - FILE_PATH_LITERAL("/home/joe/./.././../etc/passwd"));
|
| - FilePath self_traversal = FilePath(
|
| - FILE_PATH_LITERAL("/home/joe/../joe/file"));
|
| + TEST_PATH("/home/joe/./.././../etc/passwd"));
|
| + FilePath self_traversal = FilePath(TEST_PATH("/home/joe/../joe/file"));
|
| + FilePath relative_file = FilePath(FILE_PATH_LITERAL("home/joe"));
|
|
|
| ChildProcessSecurityPolicyImpl* p =
|
| ChildProcessSecurityPolicyImpl::GetInstance();
|
| @@ -386,6 +378,7 @@
|
| base::PLATFORM_FILE_READ));
|
| EXPECT_FALSE(p->HasPermissionsForFile(kRendererID, granted_file,
|
| base::PLATFORM_FILE_CREATE));
|
| + EXPECT_FALSE(p->HasPermissionsForFile(kRendererID, granted_file, 0));
|
| EXPECT_FALSE(p->HasPermissionsForFile(kRendererID, granted_file,
|
| base::PLATFORM_FILE_CREATE |
|
| base::PLATFORM_FILE_OPEN_TRUNCATED |
|
| @@ -486,6 +479,13 @@
|
| base::PLATFORM_FILE_OPEN |
|
| base::PLATFORM_FILE_READ));
|
| p->Remove(kWorkerRendererID);
|
| +
|
| + p->Add(kRendererID);
|
| + p->GrantPermissionsForFile(kRendererID, relative_file,
|
| + base::PLATFORM_FILE_OPEN);
|
| + EXPECT_FALSE(p->HasPermissionsForFile(kRendererID, relative_file,
|
| + base::PLATFORM_FILE_OPEN));
|
| + p->Remove(kRendererID);
|
| }
|
|
|
| TEST_F(ChildProcessSecurityPolicyTest, CanServiceWebUIBindings) {
|
| @@ -510,7 +510,7 @@
|
| ChildProcessSecurityPolicyImpl::GetInstance();
|
|
|
| GURL url("file:///etc/passwd");
|
| - FilePath file(FILE_PATH_LITERAL("/etc/passwd"));
|
| + FilePath file(TEST_PATH("/etc/passwd"));
|
|
|
| p->Add(kRendererID);
|
|
|
|
|