| Index: content/zygote/zygote_main_linux.cc
|
| diff --git a/content/zygote/zygote_main_linux.cc b/content/zygote/zygote_main_linux.cc
|
| index 0ec9b438366fc69442e5e42bdeead4c70e01ee25..cc28a6fc27efeeeebd148dc23461b228fc50db24 100644
|
| --- a/content/zygote/zygote_main_linux.cc
|
| +++ b/content/zygote/zygote_main_linux.cc
|
| @@ -23,6 +23,7 @@
|
| #include "base/linux_util.h"
|
| #include "base/native_library.h"
|
| #include "base/pickle.h"
|
| +#include "base/posix/eintr_wrapper.h"
|
| #include "base/posix/unix_domain_socket_linux.h"
|
| #include "base/rand_util.h"
|
| #include "base/sys_info.h"
|
| @@ -344,19 +345,10 @@ static void ZygotePreSandboxInit() {
|
| new FontConfigIPC(GetSandboxFD()))->unref();
|
| }
|
|
|
| -static void CloseFdAndHandleEintr(int fd) {
|
| - close(fd);
|
| -}
|
| -
|
| static bool CreateInitProcessReaper() {
|
| - // This "magic" socket must only appear in one process, so make sure
|
| - // it gets closed in the parent after fork().
|
| - base::Closure zygoteid_fd_closer =
|
| - base::Bind(CloseFdAndHandleEintr, kZygoteIdFd);
|
| // The current process becomes init(1), this function returns from a
|
| // newly created process.
|
| - const bool init_created =
|
| - sandbox::CreateInitProcessReaper(&zygoteid_fd_closer);
|
| + const bool init_created = sandbox::CreateInitProcessReaper(NULL);
|
| if (!init_created) {
|
| LOG(ERROR) << "Error creating an init process to reap zombies";
|
| return false;
|
| @@ -460,6 +452,13 @@ bool ZygoteMain(const MainFunctionParams& params,
|
|
|
| const bool must_enable_setuid_sandbox =
|
| linux_sandbox->setuid_sandbox_client()->IsSuidSandboxChild();
|
| + if (must_enable_setuid_sandbox) {
|
| + // When we're launched through the setuid sandbox, ZygoteHostImpl::Init
|
| + // arranges for kZygoteIdFd to be a dummy file descriptor to satisfy an
|
| + // ancient setuid sandbox ABI requirement. However, the descriptor is no
|
| + // longer needed, so we can simply close it right away now.
|
| + CHECK_EQ(0, IGNORE_EINTR(close(kZygoteIdFd)));
|
| + }
|
|
|
| if (forkdelegate != NULL) {
|
| VLOG(1) << "ZygoteMain: initializing fork delegate";
|
|
|