From 868402e5bfcc14305f216f34751d6c2e150aa849 Mon Sep 17 00:00:00 2001
From: Dan Albert <danalbert@google.com>
Date: Sat, 28 Mar 2015 11:52:10 -0700
Subject: [PATCH] Revert "Remove the emulator special case from the "adb root"
 code."

adb root doesn't work on the emulator, so this prevents root access
to a userdebug emulator.

Since the emulator has always been root even on userdebug builds, it
may be that adb root has never worked on the emulator.

Bug: 19974213

This reverts commit abd6773b41effd1e1005ad7ce8cb5e370a367302.
---
 adb/adb_main.cpp | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/adb/adb_main.cpp b/adb/adb_main.cpp
index a03fcf1a7..fb17e89f4 100644
--- a/adb/adb_main.cpp
+++ b/adb/adb_main.cpp
@@ -110,6 +110,13 @@ static bool should_drop_privileges() {
 #if defined(ALLOW_ADBD_ROOT)
     char value[PROPERTY_VALUE_MAX];
 
+    // The emulator is never secure, so don't drop privileges there.
+    // TODO: this seems like a bug --- shouldn't the emulator behave like a device?
+    property_get("ro.kernel.qemu", value, "");
+    if (strcmp(value, "1") == 0) {
+        return false;
+    }
+
     // The properties that affect `adb root` and `adb unroot` are ro.secure and
     // ro.debuggable. In this context the names don't make the expected behavior
     // particularly obvious.