DO NOT MERGE Don't allow non-instant permissions for instant apps. am: a710a30457 am: ea36a0c236
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12366889 Change-Id: Id791215e99e121b996892c5c06d9a54a5b7f691d
This commit is contained in:
@@ -3631,12 +3631,9 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
Iterator<ResolveInfo> iter = matches.iterator();
|
Iterator<ResolveInfo> iter = matches.iterator();
|
||||||
while (iter.hasNext()) {
|
while (iter.hasNext()) {
|
||||||
final ResolveInfo rInfo = iter.next();
|
final ResolveInfo rInfo = iter.next();
|
||||||
final PackageSetting ps = mSettings.mPackages.get(rInfo.activityInfo.packageName);
|
if (checkPermission(Manifest.permission.INSTALL_PACKAGES,
|
||||||
if (ps != null) {
|
rInfo.activityInfo.packageName, 0) == PERMISSION_GRANTED) {
|
||||||
final PermissionsState permissionsState = ps.getPermissionsState();
|
continue;
|
||||||
if (permissionsState.hasPermission(Manifest.permission.INSTALL_PACKAGES, 0)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
iter.remove();
|
iter.remove();
|
||||||
}
|
}
|
||||||
@@ -3884,9 +3881,24 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
final int[] gids = (flags & PackageManager.GET_GIDS) == 0
|
final int[] gids = (flags & PackageManager.GET_GIDS) == 0
|
||||||
? EMPTY_INT_ARRAY : permissionsState.computeGids(userId);
|
? EMPTY_INT_ARRAY : permissionsState.computeGids(userId);
|
||||||
// Compute granted permissions only if package has requested permissions
|
// Compute granted permissions only if package has requested permissions
|
||||||
final Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions)
|
Set<String> permissions = ArrayUtils.isEmpty(p.requestedPermissions)
|
||||||
? Collections.<String>emptySet() : permissionsState.getPermissions(userId);
|
? Collections.<String>emptySet() : permissionsState.getPermissions(userId);
|
||||||
final PackageUserState state = ps.readUserState(userId);
|
final PackageUserState state = ps.readUserState(userId);
|
||||||
|
if (state.instantApp) {
|
||||||
|
permissions = new ArraySet<>(permissions);
|
||||||
|
permissions.removeIf(permissionName -> {
|
||||||
|
BasePermission permission = mSettings.mPermissions.get(permissionName);
|
||||||
|
if (permission == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (!permission.isInstant()) {
|
||||||
|
EventLog.writeEvent(0x534e4554, "140256621", UserHandle.getUid(userId,
|
||||||
|
ps.appId), permissionName);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0
|
if ((flags & MATCH_UNINSTALLED_PACKAGES) != 0
|
||||||
&& ps.isSystem()) {
|
&& ps.isSystem()) {
|
||||||
@@ -8702,10 +8714,9 @@ public class PackageManagerService extends IPackageManager.Stub
|
|||||||
private void addPackageHoldingPermissions(ArrayList<PackageInfo> list, PackageSetting ps,
|
private void addPackageHoldingPermissions(ArrayList<PackageInfo> list, PackageSetting ps,
|
||||||
String[] permissions, boolean[] tmp, int flags, int userId) {
|
String[] permissions, boolean[] tmp, int flags, int userId) {
|
||||||
int numMatch = 0;
|
int numMatch = 0;
|
||||||
final PermissionsState permissionsState = ps.getPermissionsState();
|
|
||||||
for (int i=0; i<permissions.length; i++) {
|
for (int i=0; i<permissions.length; i++) {
|
||||||
final String permission = permissions[i];
|
final String permission = permissions[i];
|
||||||
if (permissionsState.hasPermission(permission, userId)) {
|
if (checkPermission(permission, ps.name, userId) == PERMISSION_GRANTED) {
|
||||||
tmp[i] = true;
|
tmp[i] = true;
|
||||||
numMatch++;
|
numMatch++;
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
Reference in New Issue
Block a user