[automerger] RESTRICT AUTOMERGE: Backporting of b/77821568 am: 4bc1c2445c am: b9c3b099e4 am: 24d402096e am: 0eda2602cd
Change-Id: I9692df95413c51715508b664b5bc3ea02462da55
This commit is contained in:
@@ -3814,13 +3814,25 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
*/
|
||||
void enforceCrossUserPermission(int callingUid, int userId, boolean requireFullPermission,
|
||||
boolean checkShell, String message) {
|
||||
enforceCrossUserPermission(
|
||||
callingUid,
|
||||
userId,
|
||||
requireFullPermission,
|
||||
checkShell,
|
||||
false,
|
||||
message);
|
||||
}
|
||||
|
||||
private void enforceCrossUserPermission(int callingUid, int userId,
|
||||
boolean requireFullPermission, boolean checkShell,
|
||||
boolean requirePermissionWhenSameUser, String message) {
|
||||
if (userId < 0) {
|
||||
throw new IllegalArgumentException("Invalid userId " + userId);
|
||||
}
|
||||
if (checkShell) {
|
||||
enforceShellRestriction(UserManager.DISALLOW_DEBUGGING_FEATURES, callingUid, userId);
|
||||
}
|
||||
if (userId == UserHandle.getUserId(callingUid)) return;
|
||||
if (!requirePermissionWhenSameUser && userId == UserHandle.getUserId(callingUid)) return;
|
||||
if (callingUid != Process.SYSTEM_UID && callingUid != 0) {
|
||||
if (requireFullPermission) {
|
||||
mContext.enforceCallingOrSelfPermission(
|
||||
@@ -6271,7 +6283,7 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
flags = updateFlagsForPackage(flags, userId, null);
|
||||
final boolean listUninstalled = (flags & MATCH_UNINSTALLED_PACKAGES) != 0;
|
||||
enforceCrossUserPermission(Binder.getCallingUid(), userId,
|
||||
true /* requireFullPermission */, false /* checkShell */,
|
||||
false /* requireFullPermission */, false /* checkShell */,
|
||||
"get installed packages");
|
||||
|
||||
// writer
|
||||
@@ -6379,10 +6391,18 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
|
||||
@Override
|
||||
public ParceledListSlice<ApplicationInfo> getInstalledApplications(int flags, int userId) {
|
||||
final int callingUid = Binder.getCallingUid();
|
||||
if (!sUserManager.exists(userId)) return ParceledListSlice.emptyList();
|
||||
flags = updateFlagsForApplication(flags, userId, null);
|
||||
final boolean listUninstalled = (flags & MATCH_UNINSTALLED_PACKAGES) != 0;
|
||||
|
||||
enforceCrossUserPermission(
|
||||
callingUid,
|
||||
userId,
|
||||
false /* requireFullPermission */,
|
||||
false /* checkShell */,
|
||||
"get installed application info");
|
||||
|
||||
// writer
|
||||
synchronized (mPackages) {
|
||||
ArrayList<ApplicationInfo> list;
|
||||
|
||||
Reference in New Issue
Block a user