Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
| 7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "sql/connection.h" | 9 #include "sql/connection.h" |
| 10 #include "sql/meta_table.h" | 10 #include "sql/meta_table.h" |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 552 // of journal_mode PERSIST. | 552 // of journal_mode PERSIST. |
| 553 base::FilePath journal(db_path().value() + FILE_PATH_LITERAL("-journal")); | 553 base::FilePath journal(db_path().value() + FILE_PATH_LITERAL("-journal")); |
| 554 ASSERT_TRUE(base::PathExists(db_path())); | 554 ASSERT_TRUE(base::PathExists(db_path())); |
| 555 ASSERT_TRUE(base::PathExists(journal)); | 555 ASSERT_TRUE(base::PathExists(journal)); |
| 556 | 556 |
| 557 sql::Connection::Delete(db_path()); | 557 sql::Connection::Delete(db_path()); |
| 558 EXPECT_FALSE(base::PathExists(db_path())); | 558 EXPECT_FALSE(base::PathExists(db_path())); |
| 559 EXPECT_FALSE(base::PathExists(journal)); | 559 EXPECT_FALSE(base::PathExists(journal)); |
| 560 } | 560 } |
| 561 | 561 |
| 562 #if defined(OS_POSIX) | |
| 563 TEST_F(SQLConnectionTest, UserPermission) { | |
| 564 // Cause the journal file to be created. If the default | |
| 565 // journal_mode is changed back to DELETE, then parts of this test | |
| 566 // will need to be updated. | |
| 567 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | |
| 568 | |
| 569 base::FilePath journal(db_path().value() + FILE_PATH_LITERAL("-journal")); | |
| 570 int mode; | |
| 571 | |
| 572 // If the umask is restrictive, the database files might be created | |
| 573 // without group or other access. In that case, later tests | |
| 574 // woudln't test anything real. | |
|
Greg Billock
2013/07/15 23:26:06
wouldn't
But I'm not sure I understood this comme
Scott Hess - ex-Googler
2013/07/16 18:08:13
Usually, I would expect the default umask for OSX
| |
| 575 ASSERT_TRUE(base::PathExists(db_path())); | |
| 576 ASSERT_TRUE(base::PathExists(journal)); | |
| 577 mode = file_util::FILE_PERMISSION_MASK; | |
| 578 EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | |
| 579 ASSERT_NE((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | |
|
Greg Billock
2013/07/15 23:26:06
Will this pass for such a umask? Looks like not, c
Scott Hess - ex-Googler
2013/07/16 18:08:13
Changed so this won't happen.
| |
| 580 mode = file_util::FILE_PERMISSION_MASK; | |
| 581 EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | |
| 582 ASSERT_NE((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | |
| 583 | |
| 584 // Re-open with restricted permissions and verify that the modes | |
| 585 // changed for both the main database and the journal. | |
| 586 db().Close(); | |
| 587 db().set_restrict_to_user(); | |
| 588 ASSERT_TRUE(db().Open(db_path())); | |
| 589 ASSERT_TRUE(base::PathExists(db_path())); | |
| 590 ASSERT_TRUE(base::PathExists(journal)); | |
| 591 mode = file_util::FILE_PERMISSION_MASK; | |
| 592 EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | |
| 593 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | |
| 594 mode = file_util::FILE_PERMISSION_MASK; | |
| 595 EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | |
| 596 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | |
| 597 | |
| 598 // Delete and re-create the database, the restriction should still apply. | |
| 599 db().Close(); | |
| 600 sql::Connection::Delete(db_path()); | |
| 601 ASSERT_TRUE(db().Open(db_path())); | |
| 602 ASSERT_TRUE(base::PathExists(db_path())); | |
| 603 ASSERT_FALSE(base::PathExists(journal)); | |
| 604 mode = file_util::FILE_PERMISSION_MASK; | |
| 605 EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | |
| 606 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | |
| 607 | |
| 608 // Verify that journal creation inherits the restriction. | |
| 609 EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | |
| 610 ASSERT_TRUE(base::PathExists(journal)); | |
| 611 mode = file_util::FILE_PERMISSION_MASK; | |
| 612 EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | |
| 613 ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | |
| 614 } | |
| 615 #endif // defined(OS_POSIX) | |
| 616 | |
| 562 } // namespace | 617 } // namespace |
| OLD | NEW |