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
This commit is contained in:
Dimitry Ivanov
2016-05-03 11:34:58 -07:00
parent 582666365b
commit bf3b5f7a18

View File

@@ -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);