void* ptr = mmap(nullptr, MMAP_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1, 0);
RUNNER_ASSERT_ERRNO_MSG(ptr != MAP_FAILED, "mmap() failed");
auto shmem = std::unique_ptr<void, decltype(deleter)>{ptr, std::move(deleter)};
- pid_t pid = fork();
- RUNNER_ASSERT_MSG(pid >= 0, "Fork failed");
- if (pid == 0) {
+ runInChildParentWait([&] {
SecurityManagerTest::Api::setAppProcessIdentity(m_appName);
id.uid = getuid();
}
std::memcpy(shmem.get(), &id, sizeof(id));
- _exit(0);
- }
- waitPid(pid);
+ });
+
std::memcpy(&id, shmem.get(), sizeof(id));
m_puid = id.uid;
if (id.gid != 0)