diff options
author | Elliott Hughes <enh@google.com> | 2021-02-20 21:26:29 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2021-02-20 21:26:29 +0000 |
commit | a0d3da59991452ad87b8cb3cf5d23acb627ae49f (patch) | |
tree | 56e7b1ee81a0134847c18845561229d785e9dc86 /tests | |
parent | 5e4a499e25c81d67f22a77cfc9b2b4b99c1316d0 (diff) | |
parent | d76dd14ea7a8151f4ac8742f0f1f22e2d9422e89 (diff) |
Merge "Fix fdsan death tests."
Diffstat (limited to 'tests')
-rw-r--r-- | tests/fdsan_test.cpp | 49 |
1 files changed, 30 insertions, 19 deletions
diff --git a/tests/fdsan_test.cpp b/tests/fdsan_test.cpp index 134d62117..c294ff353 100644 --- a/tests/fdsan_test.cpp +++ b/tests/fdsan_test.cpp @@ -27,6 +27,7 @@ #if defined(__BIONIC__) #include <android/fdsan.h> +#include <bionic/reserved_signals.h> #endif #include <unordered_map> @@ -38,7 +39,7 @@ EXPECT_DEATH((android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL), expression), \ (regex)) -struct FdsanTest : public ::testing::Test { +struct fdsan : public ::testing::Test { void SetUp() override { #if defined(__BIONIC__) // The bionic unit test running forks for each test by default, which turns @@ -48,28 +49,38 @@ struct FdsanTest : public ::testing::Test { } }; -TEST_F(FdsanTest, unowned_untagged_close) { +struct fdsan_DeathTest : public BionicDeathTest { +#if defined(__BIONIC__) + void SetUp() override { + android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL); + signal(BIONIC_SIGNAL_DEBUGGER, SIG_DFL); // Disable debuggerd. + BionicDeathTest::SetUp(); + } +#endif +}; + +TEST_F(fdsan, unowned_untagged_close) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); ASSERT_EQ(0, close(fd)); #endif } -TEST_F(FdsanTest, unowned_tagged_close) { +TEST_F(fdsan, unowned_tagged_close) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); ASSERT_EQ(0, android_fdsan_close_with_tag(fd, 0)); #endif } -TEST_F(FdsanTest, unowned_improperly_tagged_close) { +TEST_F(fdsan_DeathTest, unowned_improperly_tagged_close) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); EXPECT_FDSAN_DEATH(android_fdsan_close_with_tag(fd, 0xdeadbeef), "actually unowned"); #endif } -TEST_F(FdsanTest, unowned_incorrect_exchange) { +TEST_F(fdsan_DeathTest, unowned_incorrect_exchange) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); EXPECT_FDSAN_DEATH(android_fdsan_exchange_owner_tag(fd, 0xbadc0de, 0xdeadbeef), @@ -77,7 +88,7 @@ TEST_F(FdsanTest, unowned_incorrect_exchange) { #endif } -TEST_F(FdsanTest, owned_untagged_close) { +TEST_F(fdsan_DeathTest, owned_untagged_close) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef); @@ -85,7 +96,7 @@ TEST_F(FdsanTest, owned_untagged_close) { #endif } -TEST_F(FdsanTest, owned_tagged_close) { +TEST_F(fdsan, owned_tagged_close) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef); @@ -93,7 +104,7 @@ TEST_F(FdsanTest, owned_tagged_close) { #endif } -TEST_F(FdsanTest, owned_improperly_tagged_close) { +TEST_F(fdsan_DeathTest, owned_improperly_tagged_close) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef); @@ -101,7 +112,7 @@ TEST_F(FdsanTest, owned_improperly_tagged_close) { #endif } -TEST_F(FdsanTest, owned_incorrect_exchange) { +TEST_F(fdsan_DeathTest, owned_incorrect_exchange) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); android_fdsan_exchange_owner_tag(fd, 0, 0xdeadbeef); @@ -110,7 +121,7 @@ TEST_F(FdsanTest, owned_incorrect_exchange) { #endif } -TEST_F(FdsanTest, fopen) { +TEST_F(fdsan_DeathTest, fopen) { #if defined(__BIONIC__) FILE* f = fopen("/dev/null", "r"); ASSERT_TRUE(f); @@ -118,7 +129,7 @@ TEST_F(FdsanTest, fopen) { #endif } -TEST_F(FdsanTest, closedir) { +TEST_F(fdsan_DeathTest, closedir) { #if defined(__BIONIC__) DIR* dir = opendir("/dev/"); ASSERT_TRUE(dir); @@ -126,7 +137,7 @@ TEST_F(FdsanTest, closedir) { #endif } -TEST_F(FdsanTest, overflow) { +TEST_F(fdsan, overflow) { #if defined(__BIONIC__) std::unordered_map<int, uint64_t> fds; for (int i = 0; i < 4096; ++i) { @@ -142,7 +153,7 @@ TEST_F(FdsanTest, overflow) { #endif } -TEST_F(FdsanTest, owner_value_high) { +TEST_F(fdsan_DeathTest, owner_value_high) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); uint64_t tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_UNIQUE_FD, ~0ULL); @@ -152,7 +163,7 @@ TEST_F(FdsanTest, owner_value_high) { #endif } -TEST_F(FdsanTest, owner_value_low) { +TEST_F(fdsan_DeathTest, owner_value_low) { #if defined(__BIONIC__) int fd = open("/dev/null", O_RDONLY); uint64_t tag = android_fdsan_create_owner_tag(ANDROID_FDSAN_OWNER_TYPE_UNIQUE_FD, 1); @@ -162,7 +173,7 @@ TEST_F(FdsanTest, owner_value_low) { #endif } -TEST_F(FdsanTest, unique_fd_unowned_close) { +TEST_F(fdsan_DeathTest, unique_fd_unowned_close) { #if defined(__BIONIC__) android::base::unique_fd fd(open("/dev/null", O_RDONLY)); android_fdsan_set_error_level(ANDROID_FDSAN_ERROR_LEVEL_FATAL); @@ -170,19 +181,19 @@ TEST_F(FdsanTest, unique_fd_unowned_close) { #endif } -TEST_F(FdsanTest, unique_fd_untag_on_release) { +TEST_F(fdsan, unique_fd_untag_on_release) { android::base::unique_fd fd(open("/dev/null", O_RDONLY)); close(fd.release()); } -TEST_F(FdsanTest, unique_fd_move) { +TEST_F(fdsan, unique_fd_move) { android::base::unique_fd fd(open("/dev/null", O_RDONLY)); android::base::unique_fd fd_moved = std::move(fd); ASSERT_EQ(-1, fd.get()); ASSERT_GT(fd_moved.get(), -1); } -TEST_F(FdsanTest, unique_fd_unowned_close_after_move) { +TEST_F(fdsan_DeathTest, unique_fd_unowned_close_after_move) { #if defined(__BIONIC__) android::base::unique_fd fd(open("/dev/null", O_RDONLY)); android::base::unique_fd fd_moved = std::move(fd); @@ -194,7 +205,7 @@ TEST_F(FdsanTest, unique_fd_unowned_close_after_move) { #endif } -TEST_F(FdsanTest, vfork) { +TEST_F(fdsan, vfork) { android::base::unique_fd fd(open("/dev/null", O_RDONLY)); pid_t rc = vfork(); |