From 5d32e628450494b72473c039c7d6f6ce57540bb1 Mon Sep 17 00:00:00 2001 From: Cody Northrop Date: Tue, 1 Nov 2022 13:54:57 -0600 Subject: GraphicsEnv: Fix isDebuggable Update the logic used in GraphicsEnv to decide whether shared objects can be inserted into the process. This is used by Vulkan layers, GLES layers, and ANGLE when deciding whether libraries from outside packages can be used. The new logic doesn't just use PR_GET_DUMPABLE which is no longer set by default in platform debug builds. It also incorporates ANDROID_DEBUGGABLE, which is defined when `debuggable` is true in Android.bp. This happens for eng or userdebug builds of the platform. The use of `debuggable` is the replacement for reading ro.debuggable which can no longer be read at runtime (see b/193912100). Tested with: export APP_PACKAGE= adb shell settings put global angle_debug_package org.chromium.angle adb shell settings put global angle_gl_driver_selection_pkgs $APP_PACKAGE adb shell settings put global angle_gl_driver_selection_values angle Test: Released app able to load from angle_debug_package on userdebug Test: Released app cannot use angle_debug_package on user build Bug: b/253678459 Change-Id: I3dda4258e23871ee2fab2cf5ba367612e00de0e2 --- libs/graphicsenv/GraphicsEnv.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'libs/graphicsenv/GraphicsEnv.cpp') diff --git a/libs/graphicsenv/GraphicsEnv.cpp b/libs/graphicsenv/GraphicsEnv.cpp index 4a0a839948..5f5f85a2ad 100644 --- a/libs/graphicsenv/GraphicsEnv.cpp +++ b/libs/graphicsenv/GraphicsEnv.cpp @@ -126,7 +126,20 @@ static const std::string getSystemNativeLibraries(NativeLibrary type) { } bool GraphicsEnv::isDebuggable() { - return prctl(PR_GET_DUMPABLE, 0, 0, 0, 0) > 0; + // This flag determines if the application is marked debuggable + bool appDebuggable = prctl(PR_GET_DUMPABLE, 0, 0, 0, 0) > 0; + + // This flag is set only in `debuggable` builds of the platform +#if defined(ANDROID_DEBUGGABLE) + bool platformDebuggable = true; +#else + bool platformDebuggable = false; +#endif + + ALOGV("GraphicsEnv::isDebuggable returning appDebuggable=%s || platformDebuggable=%s", + appDebuggable ? "true" : "false", platformDebuggable ? "true" : "false"); + + return appDebuggable || platformDebuggable; } void GraphicsEnv::setDriverPathAndSphalLibraries(const std::string path, -- cgit v1.2.3-59-g8ed1b