From 65fb2a7f0304fda4463771ae40f8b83728e74a62 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Thu, 7 May 2020 19:40:14 -0700 Subject: fdsan: don't do anything when vforked. Bug: http://b/153926671 Test: 32/64-bit bionic-unit-tests on blueline, x86_64 emulator Change-Id: Id351a993e396774b68239edfef83d9e81205290b --- tests/fdsan_test.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'tests/fdsan_test.cpp') diff --git a/tests/fdsan_test.cpp b/tests/fdsan_test.cpp index fb3f73dc3..134d62117 100644 --- a/tests/fdsan_test.cpp +++ b/tests/fdsan_test.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #if defined(__BIONIC__) #include @@ -192,3 +193,21 @@ TEST_F(FdsanTest, unique_fd_unowned_close_after_move) { EXPECT_FDSAN_DEATH(close(fd_moved.get()), "expected to be unowned, actually owned by unique_fd"); #endif } + +TEST_F(FdsanTest, vfork) { + android::base::unique_fd fd(open("/dev/null", O_RDONLY)); + + pid_t rc = vfork(); + ASSERT_NE(-1, rc); + + if (rc == 0) { + close(fd.get()); + _exit(0); + } + + int status; + pid_t wait_result = waitpid(rc, &status, 0); + ASSERT_EQ(wait_result, rc); + ASSERT_TRUE(WIFEXITED(status)); + ASSERT_EQ(0, WEXITSTATUS(status)); +} -- cgit v1.2.3