diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageInstallerSession.java | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index a09657be83d4..d63e7041ea52 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -959,9 +959,13 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { assertPreparedAndNotDestroyedLocked("commit"); assertNoWriteFileTransfersOpenLocked(); - if (forTransfer) { + final boolean enforceInstallPackages = forTransfer + || (android.provider.Settings.Secure.getInt(mContext.getContentResolver(), + android.provider.Settings.Secure.SECURE_FRP_MODE, 0) == 1); + if (enforceInstallPackages) { mContext.enforceCallingOrSelfPermission(Manifest.permission.INSTALL_PACKAGES, null); - + } + if (forTransfer) { if (mInstallerUid == mOriginalInstallerUid) { throw new IllegalArgumentException("Session has not been transferred"); } |