Skip to content

Commit 5d4da10

Browse files
Sumedh SenAndroid Build Coastguard Worker
authored andcommitted
[RESTRICT AUTOMERGE] Prevent installing apps in policy restricted work profile using ADB
If DISALLOW_DEBUGGING_FEATURES or DISALLOW_INSTALL_APPS restrictions are set on a work profile, prevent side loading of APKs using ADB in the work profile. Bug: 257443065 Test: atest CtsPackageInstallTestCases:UserRestrictionInstallTest (cherry picked from commit febe3918020a94b2af48ade98eb6a49cdd4a3bdf) (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:b988a09db551d9a8b2aeb0e8eb88e610605709e8) Merged-In: I169a1f72c84528ca606b6a4da165d4fbcd02b08d Change-Id: I169a1f72c84528ca606b6a4da165d4fbcd02b08d
1 parent 23b2230 commit 5d4da10

1 file changed

Lines changed: 19 additions & 3 deletions

File tree

services/core/java/com/android/server/pm/InstallPackageHelper.java

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2093,9 +2093,25 @@ private void updateSettingsInternalLI(AndroidPackage pkg, ReconciledPackage reco
20932093
// The caller explicitly specified INSTALL_ALL_USERS flag.
20942094
// Thus, updating the settings to install the app for all users.
20952095
for (int currentUserId : allUsers) {
2096-
ps.setInstalled(true, currentUserId);
2097-
ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, userId,
2098-
installerPackageName);
2096+
// If the app is already installed for the currentUser,
2097+
// keep it as installed as we might be updating the app at this place.
2098+
// If not currently installed, check if the currentUser is restricted by
2099+
// DISALLOW_INSTALL_APPS or DISALLOW_DEBUGGING_FEATURES device policy.
2100+
// Install / update the app if the user isn't restricted. Skip otherwise.
2101+
final boolean installedForCurrentUser = ArrayUtils.contains(
2102+
installedForUsers, currentUserId);
2103+
final boolean restrictedByPolicy =
2104+
mPm.isUserRestricted(currentUserId,
2105+
UserManager.DISALLOW_INSTALL_APPS)
2106+
|| mPm.isUserRestricted(currentUserId,
2107+
UserManager.DISALLOW_DEBUGGING_FEATURES);
2108+
if (installedForCurrentUser || !restrictedByPolicy) {
2109+
ps.setInstalled(true, currentUserId);
2110+
ps.setEnabled(COMPONENT_ENABLED_STATE_DEFAULT, currentUserId,
2111+
installerPackageName);
2112+
} else {
2113+
ps.setInstalled(false, currentUserId);
2114+
}
20992115
}
21002116
}
21012117

0 commit comments

Comments
 (0)