From 64814139ada90b09ce85c3c71ffd6df99133e5e5 Mon Sep 17 00:00:00 2001 From: Chad Brubaker Date: Wed, 15 Mar 2017 16:00:37 -0700 Subject: [PATCH] Avoid trying to grant non-ephemeral permissions to instant apps Fixes: 36272655 Test: `adb install -g --ephemeral` does not crash if an app requests a non-ephemeral permission Change-Id: I18a6fa7697528a2a35b42e36f7010b687be23f73 --- .../core/java/com/android/server/pm/PackageManagerService.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 12890190aefc7..aef5823792d49 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -2038,12 +2038,15 @@ public class PackageManagerService extends IPackageManager.Stub { final boolean supportsRuntimePermissions = pkg.applicationInfo.targetSdkVersion >= Build.VERSION_CODES.M; + final boolean instantApp = isInstantApp(pkg.packageName, userId); + for (String permission : pkg.requestedPermissions) { final BasePermission bp; synchronized (mPackages) { bp = mSettings.mPermissions.get(permission); } if (bp != null && (bp.isRuntime() || bp.isDevelopment()) + && (!instantApp || bp.isInstant()) && (grantedPermissions == null || ArrayUtils.contains(grantedPermissions, permission))) { final int flags = permissionsState.getPermissionFlags(permission, userId);