| 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 671 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 682   // will need to be updated. | 682   // will need to be updated. | 
| 683   EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 683   EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 
| 684 | 684 | 
| 685   base::FilePath journal(db_path().value() + FILE_PATH_LITERAL("-journal")); | 685   base::FilePath journal(db_path().value() + FILE_PATH_LITERAL("-journal")); | 
| 686   int mode; | 686   int mode; | 
| 687 | 687 | 
| 688   // Given a permissive umask, the database is created with permissive | 688   // Given a permissive umask, the database is created with permissive | 
| 689   // read access for the database and journal. | 689   // read access for the database and journal. | 
| 690   ASSERT_TRUE(base::PathExists(db_path())); | 690   ASSERT_TRUE(base::PathExists(db_path())); | 
| 691   ASSERT_TRUE(base::PathExists(journal)); | 691   ASSERT_TRUE(base::PathExists(journal)); | 
| 692   mode = file_util::FILE_PERMISSION_MASK; | 692   mode = base::FILE_PERMISSION_MASK; | 
| 693   EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | 693   EXPECT_TRUE(base::GetPosixFilePermissions(db_path(), &mode)); | 
| 694   ASSERT_NE((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 694   ASSERT_NE((mode & base::FILE_PERMISSION_USER_MASK), mode); | 
| 695   mode = file_util::FILE_PERMISSION_MASK; | 695   mode = base::FILE_PERMISSION_MASK; | 
| 696   EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | 696   EXPECT_TRUE(base::GetPosixFilePermissions(journal, &mode)); | 
| 697   ASSERT_NE((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 697   ASSERT_NE((mode & base::FILE_PERMISSION_USER_MASK), mode); | 
| 698 | 698 | 
| 699   // Re-open with restricted permissions and verify that the modes | 699   // Re-open with restricted permissions and verify that the modes | 
| 700   // changed for both the main database and the journal. | 700   // changed for both the main database and the journal. | 
| 701   db().Close(); | 701   db().Close(); | 
| 702   db().set_restrict_to_user(); | 702   db().set_restrict_to_user(); | 
| 703   ASSERT_TRUE(db().Open(db_path())); | 703   ASSERT_TRUE(db().Open(db_path())); | 
| 704   ASSERT_TRUE(base::PathExists(db_path())); | 704   ASSERT_TRUE(base::PathExists(db_path())); | 
| 705   ASSERT_TRUE(base::PathExists(journal)); | 705   ASSERT_TRUE(base::PathExists(journal)); | 
| 706   mode = file_util::FILE_PERMISSION_MASK; | 706   mode = base::FILE_PERMISSION_MASK; | 
| 707   EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | 707   EXPECT_TRUE(base::GetPosixFilePermissions(db_path(), &mode)); | 
| 708   ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 708   ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); | 
| 709   mode = file_util::FILE_PERMISSION_MASK; | 709   mode = base::FILE_PERMISSION_MASK; | 
| 710   EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | 710   EXPECT_TRUE(base::GetPosixFilePermissions(journal, &mode)); | 
| 711   ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 711   ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); | 
| 712 | 712 | 
| 713   // Delete and re-create the database, the restriction should still apply. | 713   // Delete and re-create the database, the restriction should still apply. | 
| 714   db().Close(); | 714   db().Close(); | 
| 715   sql::Connection::Delete(db_path()); | 715   sql::Connection::Delete(db_path()); | 
| 716   ASSERT_TRUE(db().Open(db_path())); | 716   ASSERT_TRUE(db().Open(db_path())); | 
| 717   ASSERT_TRUE(base::PathExists(db_path())); | 717   ASSERT_TRUE(base::PathExists(db_path())); | 
| 718   ASSERT_FALSE(base::PathExists(journal)); | 718   ASSERT_FALSE(base::PathExists(journal)); | 
| 719   mode = file_util::FILE_PERMISSION_MASK; | 719   mode = base::FILE_PERMISSION_MASK; | 
| 720   EXPECT_TRUE(file_util::GetPosixFilePermissions(db_path(), &mode)); | 720   EXPECT_TRUE(base::GetPosixFilePermissions(db_path(), &mode)); | 
| 721   ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 721   ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); | 
| 722 | 722 | 
| 723   // Verify that journal creation inherits the restriction. | 723   // Verify that journal creation inherits the restriction. | 
| 724   EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 724   EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 
| 725   ASSERT_TRUE(base::PathExists(journal)); | 725   ASSERT_TRUE(base::PathExists(journal)); | 
| 726   mode = file_util::FILE_PERMISSION_MASK; | 726   mode = base::FILE_PERMISSION_MASK; | 
| 727   EXPECT_TRUE(file_util::GetPosixFilePermissions(journal, &mode)); | 727   EXPECT_TRUE(base::GetPosixFilePermissions(journal, &mode)); | 
| 728   ASSERT_EQ((mode & file_util::FILE_PERMISSION_USER_MASK), mode); | 728   ASSERT_EQ((mode & base::FILE_PERMISSION_USER_MASK), mode); | 
| 729 } | 729 } | 
| 730 #endif  // defined(OS_POSIX) | 730 #endif  // defined(OS_POSIX) | 
| 731 | 731 | 
| 732 // Test that errors start happening once Poison() is called. | 732 // Test that errors start happening once Poison() is called. | 
| 733 TEST_F(SQLConnectionTest, Poison) { | 733 TEST_F(SQLConnectionTest, Poison) { | 
| 734   EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 734   EXPECT_TRUE(db().Execute("CREATE TABLE x (x)")); | 
| 735 | 735 | 
| 736   // Before the Poison() call, things generally work. | 736   // Before the Poison() call, things generally work. | 
| 737   EXPECT_TRUE(db().IsSQLValid("INSERT INTO x VALUES ('x')")); | 737   EXPECT_TRUE(db().IsSQLValid("INSERT INTO x VALUES ('x')")); | 
| 738   EXPECT_TRUE(db().Execute("INSERT INTO x VALUES ('x')")); | 738   EXPECT_TRUE(db().Execute("INSERT INTO x VALUES ('x')")); | 
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 816   } | 816   } | 
| 817 | 817 | 
| 818   // Detach succeeds outside of a transaction. | 818   // Detach succeeds outside of a transaction. | 
| 819   db().RollbackTransaction(); | 819   db().RollbackTransaction(); | 
| 820   EXPECT_TRUE(db().DetachDatabase(kAttachmentPoint)); | 820   EXPECT_TRUE(db().DetachDatabase(kAttachmentPoint)); | 
| 821 | 821 | 
| 822   EXPECT_FALSE(db().IsSQLValid("SELECT count(*) from other.bar")); | 822   EXPECT_FALSE(db().IsSQLValid("SELECT count(*) from other.bar")); | 
| 823 } | 823 } | 
| 824 | 824 | 
| 825 }  // namespace | 825 }  // namespace | 
| OLD | NEW | 
|---|