1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "content/public/browser/android/devtools_auth.h" 6 7 #include <pwd.h> 8 #include <sys/types.h> 9 #include <unistd.h> 10 11 #include "base/logging.h" 12 13 namespace content { 14 CanUserConnectToDevTools(const net::UnixDomainServerSocket::Credentials & credentials)15bool CanUserConnectToDevTools( 16 const net::UnixDomainServerSocket::Credentials& credentials) { 17 struct passwd* creds = getpwuid(credentials.user_id); 18 if (!creds || !creds->pw_name) { 19 LOG(WARNING) << "DevTools: can't obtain creds for uid " 20 << credentials.user_id; 21 return false; 22 } 23 if (credentials.group_id == credentials.user_id && 24 (strcmp("root", creds->pw_name) == 0 || // For rooted devices 25 strcmp("shell", creds->pw_name) == 0 || // For non-rooted devices 26 27 // From processes signed with the same key 28 credentials.user_id == getuid())) { 29 return true; 30 } 31 LOG(WARNING) << "DevTools: connection attempt from " << creds->pw_name; 32 return false; 33 } 34 35 } // namespace content 36