Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bf3b5f7a authored by Dimitry Ivanov's avatar Dimitry Ivanov
Browse files

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
parent 58266636
Loading
Loading
Loading
Loading
+6 −8
Original line number Diff line number Diff line
@@ -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);