From acd05fa33e92d2b1b017a5e5ef83fada5d854736 Mon Sep 17 00:00:00 2001 From: Jerry Chang Date: Tue, 30 Jun 2020 12:47:55 +0800 Subject: [PATCH] Prevent system reset staged installer bypass flag unexpactly Perform stage installer check and consume bypass flag only when it's creating stage session and was not calling from system/shell. Fix: 159412477 Fix: 159684099 Test: atest CtsStagedInstallHostTestCases Change-Id: Ic5439ad57b3c475d36746b1b36a99618c5b09ad6 --- .../android/server/pm/PackageInstallerService.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 91b2ea1853fa8..08cdd8f052929 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -589,12 +589,12 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements } } - if (mBypassNextStagedInstallerCheck) { - mBypassNextStagedInstallerCheck = false; - } else if (params.isStaged - && !isCalledBySystemOrShell(callingUid) - && !isWhitelistedStagedInstaller(requestedInstallerPackageName)) { - throw new SecurityException("Installer not allowed to commit staged install"); + if (params.isStaged && !isCalledBySystemOrShell(callingUid)) { + if (mBypassNextStagedInstallerCheck) { + mBypassNextStagedInstallerCheck = false; + } else if (!isStagedInstallerAllowed(requestedInstallerPackageName)) { + throw new SecurityException("Installer not allowed to commit staged install"); + } } if (!params.isMultiPackage) { @@ -725,7 +725,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements || callingUid == Process.SHELL_UID; } - private boolean isWhitelistedStagedInstaller(String installerName) { + private boolean isStagedInstallerAllowed(String installerName) { return SystemConfig.getInstance().getWhitelistedStagedInstallers().contains(installerName); }