adbd: adb root should terminate adbd only if it's debuggable
adb root command will terminate adbd when closing the socket if current user id is not root. This works for userdebug build, as adb root causes re-enumeration. But for user build, adb root command won't cause re-enumeration, and if adbd is terminated and restarted, it will be in offline state, thus it won't send any thing to host. Change-Id: I81216a3b3da888cd9b236060cf745175f6d93c60 Author: jzhuan5 <jin.can.zhuang@intel.com> Signed-off-by: Bo Huang <bo.b.huang@intel.com>
This commit is contained in:
parent
0607e104c2
commit
1297d22bc9
1 changed files with 12 additions and 1 deletions
|
@ -23,6 +23,10 @@
|
|||
|
||||
#include "sysdeps.h"
|
||||
|
||||
#if !ADB_HOST
|
||||
#include <cutils/properties.h>
|
||||
#endif
|
||||
|
||||
#define TRACE_TAG TRACE_SOCKETS
|
||||
#include "adb.h"
|
||||
|
||||
|
@ -428,6 +432,9 @@ asocket *create_local_service_socket(const char *name)
|
|||
{
|
||||
asocket *s;
|
||||
int fd;
|
||||
#if !ADB_HOST
|
||||
char debug[PROPERTY_VALUE_MAX];
|
||||
#endif
|
||||
|
||||
#if !ADB_HOST
|
||||
if (!strcmp(name,"jdwp")) {
|
||||
|
@ -444,7 +451,11 @@ asocket *create_local_service_socket(const char *name)
|
|||
D("LS(%d): bound to '%s' via %d\n", s->id, name, fd);
|
||||
|
||||
#if !ADB_HOST
|
||||
if ((!strncmp(name, "root:", 5) && getuid() != 0)
|
||||
if (!strncmp(name, "root:", 5))
|
||||
property_get("ro.debuggable", debug, "");
|
||||
|
||||
if ((!strncmp(name, "root:", 5) && getuid() != 0
|
||||
&& strcmp(debug, "1") == 0)
|
||||
|| !strncmp(name, "usb:", 4)
|
||||
|| !strncmp(name, "tcpip:", 6)) {
|
||||
D("LS(%d): enabling exit_on_close\n", s->id);
|
||||
|
|
Loading…
Reference in a new issue