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

Commit 699ff74f authored by Alex Buynytskyy's avatar Alex Buynytskyy Committed by Automerger Merge Worker
Browse files

Merge "Use special permission to detect tests running as "shell identity""...

Merge "Use special permission to detect tests running as "shell identity"" into udc-dev am: e7b9aaf5

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22442052



Change-Id: I8f889a5e543732b4acfc7f7e715c88b4c83c4b8b
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 194c946c e7b9aaf5
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -677,7 +677,8 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements
                ? params.installerPackageName : installerPackageName;

        if (PackageManagerServiceUtils.isRootOrShell(callingUid)
                || PackageInstallerSession.isSystemDataLoaderInstallation(params)) {
                || PackageInstallerSession.isSystemDataLoaderInstallation(params)
                || PackageManagerServiceUtils.isAdoptedShell(callingUid, mContext)) {
            params.installFlags |= PackageManager.INSTALL_FROM_ADB;
            // adb installs can override the installingPackageName, but not the
            // initiatingPackageName
+4 −1
Original line number Diff line number Diff line
@@ -1456,7 +1456,10 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub {
            @NonNull IOnChecksumsReadyListener onChecksumsReadyListener) {
        assertCallerIsOwnerRootOrVerifier();
        final File file = new File(stageDir, name);
        final String installerPackageName = getInstallSource().mInitiatingPackageName;
        final String installerPackageName = PackageManagerServiceUtils.isInstalledByAdb(
                getInstallSource().mInitiatingPackageName)
                ? getInstallSource().mInstallerPackageName
                : getInstallSource().mInitiatingPackageName;
        try {
            mPm.requestFileChecksums(file, installerPackageName, optional, required,
                    trustedInstallers, onChecksumsReadyListener);
+9 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import static com.android.server.pm.PackageManagerService.SHELL_PACKAGE_NAME;
import static com.android.server.pm.PackageManagerService.STUB_SUFFIX;
import static com.android.server.pm.PackageManagerService.TAG;

import android.Manifest;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
@@ -1388,6 +1389,14 @@ public class PackageManagerServiceUtils {
        return uid == Process.SYSTEM_UID || uid == Process.ROOT_UID;
    }

    /**
     * Check if a UID is non-system UID adopted shell permission.
     */
    public static boolean isAdoptedShell(int uid, Context context) {
        return uid != Process.SYSTEM_UID && context.checkCallingOrSelfPermission(
                Manifest.permission.USE_SYSTEM_DATA_LOADERS) == PackageManager.PERMISSION_GRANTED;
    }

    /**
     * Check if a UID is system UID or shell's UID.
     */