diff options
author | serya@chromium.org <serya@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-08 09:17:41 +0000 |
---|---|---|
committer | serya@chromium.org <serya@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-08 09:19:27 +0000 |
commit | fe928be94514d6331264a36344316ff0abb8bfa7 (patch) | |
tree | 5a3f2d3f8dc18aa762c7bbdcb7127b4eb0128416 /net/socket/unix_domain_server_socket_posix.cc | |
parent | 236ccaa12431f101db8fc18d632352087e4eead9 (diff) | |
download | chromium_src-fe928be94514d6331264a36344316ff0abb8bfa7.zip chromium_src-fe928be94514d6331264a36344316ff0abb8bfa7.tar.gz chromium_src-fe928be94514d6331264a36344316ff0abb8bfa7.tar.bz2 |
Supports DevTools socket access authentication based on Android permissions.
BUG=399567
Review URL: https://codereview.chromium.org/382143005
Cr-Commit-Position: refs/heads/master@{#288273}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@288273 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/socket/unix_domain_server_socket_posix.cc')
-rw-r--r-- | net/socket/unix_domain_server_socket_posix.cc | 20 |
1 files changed, 10 insertions, 10 deletions
diff --git a/net/socket/unix_domain_server_socket_posix.cc b/net/socket/unix_domain_server_socket_posix.cc index 8f2f2d6..a81f1ce 100644 --- a/net/socket/unix_domain_server_socket_posix.cc +++ b/net/socket/unix_domain_server_socket_posix.cc @@ -28,19 +28,20 @@ UnixDomainServerSocket::~UnixDomainServerSocket() { } // static -bool UnixDomainServerSocket::GetPeerIds(SocketDescriptor socket, - uid_t* user_id, - gid_t* group_id) { +bool UnixDomainServerSocket::GetPeerCredentials(SocketDescriptor socket, + Credentials* credentials) { #if defined(OS_LINUX) || defined(OS_ANDROID) struct ucred user_cred; socklen_t len = sizeof(user_cred); if (getsockopt(socket, SOL_SOCKET, SO_PEERCRED, &user_cred, &len) < 0) return false; - *user_id = user_cred.uid; - *group_id = user_cred.gid; + credentials->process_id = user_cred.pid; + credentials->user_id = user_cred.uid; + credentials->group_id = user_cred.gid; return true; #else - return getpeereid(socket, user_id, group_id) == 0; + return getpeereid( + socket, &credentials->user_id, &credentials->group_id) == 0; #endif } @@ -130,10 +131,9 @@ bool UnixDomainServerSocket::AuthenticateAndGetStreamSocket( scoped_ptr<StreamSocket>* socket) { DCHECK(accept_socket_); - uid_t user_id; - gid_t group_id; - if (!GetPeerIds(accept_socket_->socket_fd(), &user_id, &group_id) || - !auth_callback_.Run(user_id, group_id)) { + Credentials credentials; + if (!GetPeerCredentials(accept_socket_->socket_fd(), &credentials) || + !auth_callback_.Run(credentials)) { accept_socket_.reset(); return false; } |