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

Commit 595c48e4 authored by Christopher Tate's avatar Christopher Tate Committed by Android Git Automerger
Browse files

am d570dae5: Merge "Fix priv-app edge case across OTAs" into klp-dev

* commit 'd570dae5':
  Fix priv-app edge case across OTAs
parents 54b7e3e8 d570dae5
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -5566,9 +5566,9 @@ public class PackageManagerService extends IPackageManager.Stub {
                        // version of the one on the data partition, but which
                        // granted a new system permission that it didn't have
                        // before.  In this case we do want to allow the app to
                        // now get the new permission if the new system-partition
                        // apk is privileged to get it.
                        if (sysPs.pkg != null && isPrivilegedApp(pkg)) {
                        // now get the new permission if the ancestral apk is
                        // privileged to get it.
                        if (sysPs.pkg != null && sysPs.isPrivileged()) {
                            for (int j=0;
                                    j<sysPs.pkg.requestedPermissions.size(); j++) {
                                if (perm.equals(
@@ -9370,7 +9370,7 @@ public class PackageManagerService extends IPackageManager.Stub {
        }
    }

    boolean locationIsPrivileged(File path) {
    static boolean locationIsPrivileged(File path) {
        try {
            final String privilegedAppDir = new File(Environment.getRootDirectory(), "priv-app")
                    .getCanonicalPath();
+5 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.pm;

import android.content.pm.ApplicationInfo;
import android.content.pm.PackageParser;

import java.io.File;
@@ -56,4 +57,8 @@ final class PackageSetting extends PackageSettingBase {
    public int[] getGids() {
        return sharedUser != null ? sharedUser.gids : gids;
    }

    public boolean isPrivileged() {
        return (pkgFlags & ApplicationInfo.FLAG_PRIVILEGED) != 0;
    }
}
+6 −1
Original line number Diff line number Diff line
@@ -2210,7 +2210,11 @@ final class Settings {

        int pkgFlags = 0;
        pkgFlags |= ApplicationInfo.FLAG_SYSTEM;
        PackageSetting ps = new PackageSetting(name, realName, new File(codePathStr),
        final File codePathFile = new File(codePathStr);
        if (PackageManagerService.locationIsPrivileged(codePathFile)) {
            pkgFlags |= ApplicationInfo.FLAG_PRIVILEGED;
        }
        PackageSetting ps = new PackageSetting(name, realName, codePathFile,
                new File(resourcePathStr), nativeLibraryPathStr, versionCode, pkgFlags);
        String timeStampStr = parser.getAttributeValue(null, "ft");
        if (timeStampStr != null) {
@@ -2266,6 +2270,7 @@ final class Settings {
                XmlUtils.skipCurrentTag(parser);
            }
        }

        mDisabledSysPackages.put(name, ps);
    }