diff options
Diffstat (limited to 'tests/fdsan_test.cpp')
-rw-r--r-- | tests/fdsan_test.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
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 <fcntl.h> #include <stdlib.h> #include <sys/types.h> +#include <unistd.h> #if defined(__BIONIC__) #include <android/fdsan.h> @@ -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)); +} |