diff options
| author | 2017-06-06 01:49:12 +0000 | |
|---|---|---|
| committer | 2017-06-06 01:49:12 +0000 | |
| commit | 27eb2e2b5b815d6a79b0f6d176af10f73c6e74ca (patch) | |
| tree | 494db422ac76bec397462d5ffc792ede764a45fa | |
| parent | 39c23689dd4b730fd67ec913fe6087b5c2e04d0c (diff) | |
| parent | 9bac79a540b288062e890032513baf51e67e9feb (diff) | |
Merge "Don't verify instant apps" into oc-dev
am: 9bac79a540
Change-Id: I63537d6e6048152f93b5d314250334bcb1e75520
| -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 c30d42d4eb04..3324f66ce4c9 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -14898,7 +14898,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; } @@ -14919,6 +14919,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) { @@ -15753,8 +15770,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); |