diff --git a/adb/daemon/main.cpp b/adb/daemon/main.cpp index 094988a99..78434a08a 100644 --- a/adb/daemon/main.cpp +++ b/adb/daemon/main.cpp @@ -35,7 +35,8 @@ #include #include "debuggerd/client.h" -#include "private/android_filesystem_config.h" +#include +#include #include "selinux/android.h" #include "adb.h" @@ -48,7 +49,7 @@ static const char* root_seclabel = nullptr; static void drop_capabilities_bounding_set_if_needed(struct minijail *j) { #if defined(ALLOW_ADBD_ROOT) - if (android::base::GetBoolProperty("ro.debuggable", false)) { + if (__android_log_is_debuggable()) { return; } #endif @@ -68,7 +69,7 @@ static bool should_drop_privileges() { // ro.secure: // Drop privileges by default. Set to 1 on userdebug and user builds. bool ro_secure = android::base::GetBoolProperty("ro.secure", true); - bool ro_debuggable = android::base::GetBoolProperty("ro.debuggable", false); + bool ro_debuggable = __android_log_is_debuggable(); // Drop privileges if ro.secure is set... bool drop = ro_secure; diff --git a/adb/services.cpp b/adb/services.cpp index 0c3dd00f9..2fbc15a26 100644 --- a/adb/services.cpp +++ b/adb/services.cpp @@ -38,8 +38,9 @@ #include #if !ADB_HOST -#include "cutils/android_reboot.h" #include +#include +#include #endif #include "adb.h" @@ -73,7 +74,7 @@ void restart_root_service(int fd, void *cookie) { WriteFdExactly(fd, "adbd is already running as root\n"); adb_close(fd); } else { - if (!android::base::GetBoolProperty("ro.debuggable", false)) { + if (!__android_log_is_debuggable()) { WriteFdExactly(fd, "adbd cannot run as root in production builds\n"); adb_close(fd); return; diff --git a/adb/set_verity_enable_state_service.cpp b/adb/set_verity_enable_state_service.cpp index ae628e4bd..f9e028b8d 100644 --- a/adb/set_verity_enable_state_service.cpp +++ b/adb/set_verity_enable_state_service.cpp @@ -26,6 +26,7 @@ #include "android-base/properties.h" #include "android-base/stringprintf.h" +#include #include "adb.h" #include "adb_io.h" @@ -102,8 +103,7 @@ void set_verity_enabled_state_service(int fd, void* cookie) { WriteFdFmt(fd, "verity not enabled - ENG build\n"); return; } - - if (!android::base::GetBoolProperty("ro.debuggable", false)) { + if (!__android_log_is_debuggable()) { WriteFdFmt(fd, "verity cannot be disabled/enabled - USER build\n"); return; } diff --git a/adb/sockets.cpp b/adb/sockets.cpp index fff6049cd..3a5717488 100644 --- a/adb/sockets.cpp +++ b/adb/sockets.cpp @@ -32,6 +32,7 @@ #if !ADB_HOST #include +#include #endif #include "adb.h" @@ -416,12 +417,7 @@ asocket* create_local_service_socket(const char* name, const atransport* transpo D("LS(%d): bound to '%s' via %d", s->id, name, fd); #if !ADB_HOST - bool debuggable = false; - if (!strncmp(name, "root:", 5)) { - debuggable = android::base::GetBoolProperty("ro.debuggable", false); - } - - if ((!strncmp(name, "root:", 5) && getuid() != 0 && debuggable) || + if ((!strncmp(name, "root:", 5) && getuid() != 0 && __android_log_is_debuggable()) || (!strncmp(name, "unroot:", 7) && getuid() == 0) || !strncmp(name, "usb:", 4) || !strncmp(name, "tcpip:", 6)) { diff --git a/debuggerd/Android.mk b/debuggerd/Android.mk index 1fc850f38..155b30936 100644 --- a/debuggerd/Android.mk +++ b/debuggerd/Android.mk @@ -120,6 +120,7 @@ debuggerd_shared_libraries := \ libbacktrace \ libbase \ libcutils \ + liblog debuggerd_c_includes := \ $(LOCAL_PATH)/test \ diff --git a/debuggerd/tombstone.cpp b/debuggerd/tombstone.cpp index c87182e88..e2461c0c6 100644 --- a/debuggerd/tombstone.cpp +++ b/debuggerd/tombstone.cpp @@ -32,13 +32,13 @@ #include #include -#include #include #include #include #include #include #include +#include #include @@ -622,9 +622,7 @@ static void dump_logs(log_t* log, pid_t pid, unsigned int tail) { static void dump_crash(log_t* log, BacktraceMap* map, pid_t pid, pid_t tid, const std::set& siblings, uintptr_t abort_msg_address) { // don't copy log messages to tombstone unless this is a dev device - char value[PROPERTY_VALUE_MAX]; - property_get("ro.debuggable", value, "0"); - bool want_logs = (value[0] == '1'); + bool want_logs = __android_log_is_debuggable(); _LOG(log, logtype::HEADER, "*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\n"); diff --git a/fs_mgr/fs_mgr.c b/fs_mgr/fs_mgr.c index 2ed6b91d4..d57025571 100644 --- a/fs_mgr/fs_mgr.c +++ b/fs_mgr/fs_mgr.c @@ -41,6 +41,7 @@ #include #include #include +#include #include "fs_mgr_priv.h" #include "fs_mgr_priv_verity.h" @@ -260,15 +261,6 @@ static int fs_match(char *in1, char *in2) return ret; } -static int device_is_debuggable() { - int ret = -1; - char value[PROP_VALUE_MAX]; - ret = __system_property_get("ro.debuggable", value); - if (ret < 0) - return ret; - return strcmp(value, "1") ? 0 : 1; -} - static int device_is_secure() { int ret = -1; char value[PROP_VALUE_MAX]; @@ -537,7 +529,7 @@ int fs_mgr_mount_all(struct fstab *fstab, int mount_mode) if ((fstab->recs[i].fs_mgr_flags & MF_VERIFY) && device_is_secure()) { int rc = fs_mgr_setup_verity(&fstab->recs[i]); - if (device_is_debuggable() && rc == FS_MGR_SETUP_VERITY_DISABLED) { + if (__android_log_is_debuggable() && rc == FS_MGR_SETUP_VERITY_DISABLED) { INFO("Verity disabled"); } else if (rc != FS_MGR_SETUP_VERITY_SUCCESS) { ERROR("Could not set up verified partition, skipping!\n"); @@ -699,7 +691,7 @@ int fs_mgr_do_mount(struct fstab *fstab, char *n_name, char *n_blk_device, if ((fstab->recs[i].fs_mgr_flags & MF_VERIFY) && device_is_secure()) { int rc = fs_mgr_setup_verity(&fstab->recs[i]); - if (device_is_debuggable() && rc == FS_MGR_SETUP_VERITY_DISABLED) { + if (__android_log_is_debuggable() && rc == FS_MGR_SETUP_VERITY_DISABLED) { INFO("Verity disabled"); } else if (rc != FS_MGR_SETUP_VERITY_SUCCESS) { ERROR("Could not set up verified partition, skipping!\n"); @@ -903,7 +895,7 @@ int fs_mgr_early_setup_verity(struct fstab_rec *fstab_rec) { if ((fstab_rec->fs_mgr_flags & MF_VERIFY) && device_is_secure()) { int rc = fs_mgr_setup_verity(fstab_rec); - if (device_is_debuggable() && rc == FS_MGR_SETUP_VERITY_DISABLED) { + if (__android_log_is_debuggable() && rc == FS_MGR_SETUP_VERITY_DISABLED) { INFO("Verity disabled"); return FS_MGR_EARLY_SETUP_VERITY_NO_VERITY; } else if (rc == FS_MGR_SETUP_VERITY_SUCCESS) { diff --git a/libcutils/trace-dev.c b/libcutils/trace-dev.c index dcd95821f..113f423cb 100644 --- a/libcutils/trace-dev.c +++ b/libcutils/trace-dev.c @@ -26,10 +26,10 @@ #include #include -#include #include #include #include +#include /** * Maximum size of a message that can be logged to the trace buffer. @@ -86,16 +86,9 @@ static bool atrace_is_cmdline_match(const char* cmdline) // Determine whether application-level tracing is enabled for this process. static bool atrace_is_app_tracing_enabled() { - bool sys_debuggable = false; - char value[PROPERTY_VALUE_MAX]; + bool sys_debuggable = __android_log_is_debuggable(); bool result = false; - // Check whether the system is debuggable. - property_get("ro.debuggable", value, "0"); - if (value[0] == '1') { - sys_debuggable = true; - } - if (sys_debuggable || atrace_is_debuggable) { // Check whether tracing is enabled for this process. FILE * file = fopen("/proc/self/cmdline", "re"); diff --git a/logd/main.cpp b/logd/main.cpp index a0cea25cf..c47f3964c 100644 --- a/logd/main.cpp +++ b/logd/main.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #include #include @@ -174,11 +175,8 @@ bool property_get_bool(const char *key, int flag) { BOOL_DEFAULT_FALSE)) { return false; } - if (flag & BOOL_DEFAULT_FLAG_ENG) { - property_get("ro.debuggable", property, ""); - if (strcmp(property, "1")) { - return false; - } + if ((flag & BOOL_DEFAULT_FLAG_ENG) && !__android_log_is_debuggable()) { + return false; } return (flag & BOOL_DEFAULT_FLAG_TRUE_FALSE) != BOOL_DEFAULT_FALSE;