[automerger] RESTRICT AUTOMERGE: Check both self and shared user id package for requested permissions. am: 8da6786608 am: 7d153c56c6 am: eff2a46342 am: ee4a2aee83
Change-Id: Ieaa5386305a8d359b5b79d99925bd12696bbce2a
This commit is contained in:
@@ -252,6 +252,7 @@ import com.android.server.SystemConfig;
|
||||
import com.android.server.Watchdog;
|
||||
import com.android.server.net.NetworkPolicyManagerInternal;
|
||||
import com.android.server.pm.PermissionsState.PermissionState;
|
||||
import com.android.server.pm.PackageSetting;
|
||||
import com.android.server.pm.Settings.DatabaseVersion;
|
||||
import com.android.server.pm.Settings.VersionInfo;
|
||||
import com.android.server.storage.DeviceStorageMonitorInternal;
|
||||
@@ -4029,8 +4030,10 @@ public class PackageManagerService extends IPackageManager.Stub {
|
||||
|
||||
private static void enforceDeclaredAsUsedAndRuntimeOrDevelopmentPermission(PackageParser.Package pkg,
|
||||
BasePermission bp) {
|
||||
final PackageSetting pkgSetting = (PackageSetting) pkg.mExtras;
|
||||
final PermissionsState permsState = pkgSetting.getPermissionsState();
|
||||
int index = pkg.requestedPermissions.indexOf(bp.name);
|
||||
if (index == -1) {
|
||||
if (!permsState.hasRequestedPermission(bp.name) && index == -1) {
|
||||
throw new SecurityException("Package " + pkg.packageName
|
||||
+ " has not requested permission " + bp.name);
|
||||
}
|
||||
|
||||
@@ -260,6 +260,14 @@ public final class PermissionsState {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the state has any known request for the given permission name,
|
||||
* whether or not it has been granted.
|
||||
*/
|
||||
public boolean hasRequestedPermission(String name) {
|
||||
return mPermissions != null && (mPermissions.get(name) != null);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all permissions for a given device user id regardless if they
|
||||
* are install time or runtime permissions.
|
||||
|
||||
Reference in New Issue
Block a user