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

Commit 4aa27624 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 am: 162fe10c

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



Change-Id: I623ebd2197b3b72a59fa1947a330b9f6fdc30934
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 96eff559 162fe10c
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
@@ -1461,7 +1461,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.
     */