From 1d7d40e90c2062cd11ca51e48633ce27c2a10781 Mon Sep 17 00:00:00 2001 From: Alex Buynytskyy Date: Mon, 22 Feb 2021 15:43:10 -0800 Subject: [PATCH] Add a new permission to allow usage of system dataloaders. Shell delegation only delegates permissions/appops. Need to add the permission instead of checking UIDs. Bug: 168508924 Test: atest PackageManagerShellCommandTest PackageManagerShellCommandIncrementalTest IncrementalServiceTest PackageManagerServiceTest ChecksumsTest Change-Id: If31980b698cdfef251ffdca400d641a79948019f Merged-In: If31980b698cdfef251ffdca400d641a79948019f --- core/res/AndroidManifest.xml | 7 +++++++ packages/Shell/AndroidManifest.xml | 1 + .../com/android/server/pm/PackageInstallerSession.java | 9 +++++++-- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index a85996afa900e..5dd85805cfc18 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -3983,6 +3983,13 @@ + + + + diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index f09f33ea95ffa..9e2ca9d323159 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -1010,9 +1010,14 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { throw new IllegalArgumentException( "DataLoader installation of APEX modules is not allowed."); } + if (this.params.dataLoaderParams.getComponentName().getPackageName() - == SYSTEM_DATA_LOADER_PACKAGE) { - assertShellOrSystemCalling("System data loaders"); + == SYSTEM_DATA_LOADER_PACKAGE && mContext.checkCallingOrSelfPermission( + Manifest.permission.USE_SYSTEM_DATA_LOADERS) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException("You need the " + + "com.android.permission.USE_SYSTEM_DATA_LOADERS permission " + + "to use system data loaders"); } }