Loading services/core/java/com/android/server/pm/PackageInstallerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading services/core/java/com/android/server/pm/PackageInstallerSession.java +4 −1 Original line number Diff line number Diff line Loading @@ -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); Loading services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +9 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading Loading
services/core/java/com/android/server/pm/PackageInstallerService.java +2 −1 Original line number Diff line number Diff line Loading @@ -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 Loading
services/core/java/com/android/server/pm/PackageInstallerSession.java +4 −1 Original line number Diff line number Diff line Loading @@ -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); Loading
services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +9 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. */ Loading