From bf3b5f7a18b128c0d8b19a3bcbf12e7759bb12f8 Mon Sep 17 00:00:00 2001 From: Dimitry Ivanov Date: Tue, 3 May 2016 11:34:58 -0700 Subject: [PATCH] Allow apps to load libraries from under /data Allow all application classloaders to load native libraries from anywhere under /data Bug: http://b/26954419 Change-Id: I8a808bcdf4a00f7d40b513d4e2ca3d1e76c0909f --- core/java/android/app/LoadedApk.java | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/core/java/android/app/LoadedApk.java b/core/java/android/app/LoadedApk.java index bb2cc95fbec2c..e60712aaf359a 100644 --- a/core/java/android/app/LoadedApk.java +++ b/core/java/android/app/LoadedApk.java @@ -465,20 +465,18 @@ public final class LoadedApk { final String zip = mIncludeCode ? TextUtils.join(File.pathSeparator, zipPaths) : ""; final boolean isBundledApp = mApplicationInfo.isSystemApp() && !mApplicationInfo.isUpdatedSystemApp(); - String libraryPermittedPath = mDataDir; + + // Apps are allowed to open any native library under /data + // TODO (dimitry):This is something which could be limited to apps own directory + // later on but currently there are number of apps relying on this. + // (see http://b/27588281 and http://b/26954419 for examples) + String libraryPermittedPath = "/data"; if (isBundledApp) { // This is necessary to grant bundled apps access to // libraries located in subdirectories of /system/lib libraryPermittedPath += File.pathSeparator + System.getProperty("java.library.path"); } - // DO NOT SHIP: this is a workaround for apps loading native libraries - // provided by 3rd party apps using absolute path instead of corresponding - // classloader; see http://b/26954419 for example. - if (mApplicationInfo.targetSdkVersion <= 23) { - libraryPermittedPath += File.pathSeparator + "/data/app"; - } - // ----------------------------------------------------------------------------- final String librarySearchPath = TextUtils.join(File.pathSeparator, libPaths);