diff options
| author | 2017-06-06 16:04:32 +0000 | |
|---|---|---|
| committer | 2017-06-06 16:04:39 +0000 | |
| commit | a7ff464ec4bcf2f0f894e7551cfb1b3979301e61 (patch) | |
| tree | f5311688dff1a9e662eec9be6a1e903044343a33 | |
| parent | 38e4ceecfd5b5f0f2d1f1fb3666ed7f2d14512f7 (diff) | |
| parent | f5eef31de51daec220e736b87d123ae5b268bfba (diff) | |
Merge "Merge "Don't verify instant apps" into oc-dev am: 9bac79a540 am: 27eb2e2b5b"
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 8bd1f790e524..66c870c502c4 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -14952,7 +14952,7 @@ public class PackageManagerService extends IPackageManager.Stub * * @return true if verification should be performed */ - private boolean isVerificationEnabled(int userId, int installFlags) { + private boolean isVerificationEnabled(int userId, int installFlags, int installerUid) { if (!DEFAULT_VERIFY_ENABLE) { return false; } @@ -14973,6 +14973,23 @@ public class PackageManagerService extends IPackageManager.Stub android.provider.Settings.Global.PACKAGE_VERIFIER_INCLUDE_ADB, 1) == 0) { return false; } + } else { + // only when not installed from ADB, skip verification for instant apps when + // the installer and verifier are the same. + if ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0) { + if (mInstantAppInstallerActivity != null + && mInstantAppInstallerActivity.packageName.equals( + mRequiredVerifierPackage)) { + try { + mContext.getSystemService(AppOpsManager.class) + .checkPackage(installerUid, mRequiredVerifierPackage); + if (DEBUG_VERIFY) { + Slog.i(TAG, "disable verification for instant app"); + } + return false; + } catch (SecurityException ignore) { } + } + } } if (ensureVerifyAppsEnabled) { @@ -15807,8 +15824,11 @@ public class PackageManagerService extends IPackageManager.Stub final int requiredUid = mRequiredVerifierPackage == null ? -1 : getPackageUid(mRequiredVerifierPackage, MATCH_DEBUG_TRIAGED_MISSING, verifierUser.getIdentifier()); + final int installerUid = + verificationInfo == null ? -1 : verificationInfo.installerUid; if (!origin.existing && requiredUid != -1 - && isVerificationEnabled(verifierUser.getIdentifier(), installFlags)) { + && isVerificationEnabled( + verifierUser.getIdentifier(), installFlags, installerUid)) { final Intent verification = new Intent( Intent.ACTION_PACKAGE_NEEDS_VERIFICATION); verification.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); |