Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1297d22b authored by jzhuan5's avatar jzhuan5 Committed by Bo Huang
Browse files

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: default avatarBo Huang <bo.b.huang@intel.com>
parent 0607e104
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -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);