| Index: sandbox/linux/services/proc_util.cc
|
| diff --git a/sandbox/linux/services/proc_util.cc b/sandbox/linux/services/proc_util.cc
|
| index fd0e34826e787c58ea07ed2aa98044bd95002908..13d8842f788b453393f7ca802e2f3c0b6d2110a1 100644
|
| --- a/sandbox/linux/services/proc_util.cc
|
| +++ b/sandbox/linux/services/proc_util.cc
|
| @@ -13,6 +13,7 @@
|
|
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| +#include "base/posix/eintr_wrapper.h"
|
| #include "base/strings/string_number_conversions.h"
|
|
|
| namespace sandbox {
|
| @@ -31,7 +32,8 @@ typedef scoped_ptr<DIR, DIRCloser> ScopedDIR;
|
|
|
| int ProcUtil::CountOpenFds(int proc_fd) {
|
| DCHECK_LE(0, proc_fd);
|
| - int proc_self_fd = openat(proc_fd, "self/fd", O_DIRECTORY | O_RDONLY);
|
| + int proc_self_fd = HANDLE_EINTR(
|
| + openat(proc_fd, "self/fd", O_DIRECTORY | O_RDONLY | O_CLOEXEC));
|
| PCHECK(0 <= proc_self_fd);
|
|
|
| // Ownership of proc_self_fd is transferred here, it must not be closed
|
| @@ -109,4 +111,13 @@ bool ProcUtil::HasOpenDirectory(int proc_fd) {
|
| return false;
|
| }
|
|
|
| +//static
|
| +base::ScopedFD ProcUtil::OpenProcSelfTask() {
|
| + base::ScopedFD proc_self_task(
|
| + HANDLE_EINTR(
|
| + open("/proc/self/task/", O_RDONLY | O_DIRECTORY | O_CLOEXEC)));
|
| + PCHECK(proc_self_task.is_valid());
|
| + return proc_self_task.Pass();
|
| +}
|
| +
|
| } // namespace sandbox
|
|
|