Chromium Code Reviews| 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..717111e23ecaa17fdd6a0354f1ad52d80a93341f 100644 |
| --- a/net/socket/unix_domain_server_socket_posix.cc |
| +++ b/net/socket/unix_domain_server_socket_posix.cc |
| @@ -29,6 +29,7 @@ UnixDomainServerSocket::~UnixDomainServerSocket() { |
| // static |
| bool UnixDomainServerSocket::GetPeerIds(SocketDescriptor socket, |
| + pid_t* process_id, |
| uid_t* user_id, |
| gid_t* group_id) { |
| #if defined(OS_LINUX) || defined(OS_ANDROID) |
| @@ -36,10 +37,12 @@ bool UnixDomainServerSocket::GetPeerIds(SocketDescriptor socket, |
| socklen_t len = sizeof(user_cred); |
| if (getsockopt(socket, SOL_SOCKET, SO_PEERCRED, &user_cred, &len) < 0) |
| return false; |
| + *process_id = user_cred.pid; |
| *user_id = user_cred.uid; |
| *group_id = user_cred.gid; |
| return true; |
| #else |
| + *process_id = 0; |
|
mmenke
2014/08/01 16:26:52
Not a huge fan of just silently making process_id
SeRya
2014/08/04 10:47:03
It seems there is no consensus among UNIX systems
mmenke
2014/08/04 15:45:58
I'd prefer that approach. Setting it to 0 on some
SeRya
2014/08/04 20:14:25
Done.
|
| return getpeereid(socket, user_id, group_id) == 0; |
| #endif |
| } |
| @@ -130,10 +133,12 @@ bool UnixDomainServerSocket::AuthenticateAndGetStreamSocket( |
| scoped_ptr<StreamSocket>* socket) { |
| DCHECK(accept_socket_); |
| + pid_t process_id; |
| 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)) { |
| + if (!GetPeerIds(accept_socket_->socket_fd(), |
| + &process_id, &user_id, &group_id) || |
| + !auth_callback_.Run(process_id, user_id, group_id)) { |
| accept_socket_.reset(); |
| return false; |
| } |