Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1575)

Unified Diff: net/socket/unix_domain_server_socket_posix.cc

Issue 382143005: Supports DevTools socket access authentication based on Android permissions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Merged Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;
}

Powered by Google App Engine
This is Rietveld 408576698