Index: net/socket/unix_domain_server_socket_posix.cc |
diff --git a/net/socket/unix_domain_server_socket_posix.cc b/net/socket/unix_domain_server_socket_posix.cc |
index 8f2f2d6de2f01e4bffa0758b22edea5c96489455..a81f1ce033af0ea6a87f28e4b1c04c8c88012184 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; |
} |