diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 19:36:50 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-03-14 19:36:50 +0000 |
commit | c0e895e2961bd05570b0d7660016914601bf8c7d (patch) | |
tree | 3104b59d5f4d22ad60a35a3bcefdb7caff27d3c0 /ipc/ipc_channel_factory.cc | |
parent | 5fcc99e7cf20aa9d0c44e2fdaef207d9e45f907a (diff) | |
download | chromium_src-c0e895e2961bd05570b0d7660016914601bf8c7d.zip chromium_src-c0e895e2961bd05570b0d7660016914601bf8c7d.tar.gz chromium_src-c0e895e2961bd05570b0d7660016914601bf8c7d.tar.bz2 |
Implement ScopedFD in terms of ScopedGeneric.
Move to a new file base/files/scoped_file.h. I will also add ScopedFILE to here (currently in file_util.h) later.
I think there is a crash in the old code in content/browser/zygote_host/zygote_host_impl_linux.cc that this patch should fix. The old ScopedFD took the address of something in a vector that is being modified.
I removed SafeScopedFD from content/common/sandbox_linux/sandbox_linux.cc since base's ScopedFD not CHECKs on close failure (this is a more recent addition).
BUG=
R=agl@chromium.org, viettrungluu@chromium.org
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=257001
Review URL: https://codereview.chromium.org/191673003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@257179 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ipc/ipc_channel_factory.cc')
-rw-r--r-- | ipc/ipc_channel_factory.cc | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/ipc/ipc_channel_factory.cc b/ipc/ipc_channel_factory.cc index 5c24284..244024c 100644 --- a/ipc/ipc_channel_factory.cc +++ b/ipc/ipc_channel_factory.cc @@ -5,6 +5,7 @@ #include "ipc/ipc_channel_factory.h" #include "base/file_util.h" +#include "base/files/scoped_file.h" #include "base/logging.h" #include "ipc/unix_domain_socket_util.h" @@ -51,21 +52,20 @@ void ChannelFactory::OnFileCanReadWithoutBlocking(int fd) { delegate_->OnListenError(); return; } + base::ScopedFD scoped_fd(new_fd); - if (new_fd < 0) { + if (!scoped_fd.is_valid()) { // The accept() failed, but not in such a way that the factory needs to be // shut down. return; } - file_util::ScopedFD scoped_fd(&new_fd); - // Verify that the IPC channel peer is running as the same user. - if (!IsPeerAuthorized(new_fd)) + if (!IsPeerAuthorized(scoped_fd.get())) return; ChannelHandle handle(std::string(), - base::FileDescriptor(*scoped_fd.release(), true)); + base::FileDescriptor(scoped_fd.release(), true)); delegate_->OnClientConnected(handle); } |