Chromium Code Reviews| 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(TEST_PATH("home/joe")); |
|
Charlie Reis
2013/01/04 20:59:34
Isn't this going to result in c:home/joe? I suppo
|
| 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); |