diff options
3 files changed, 6 insertions, 76 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index ec9d00e94d8d..2f4e94823642 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -276,7 +276,6 @@ import com.android.server.Watchdog; import com.android.server.net.NetworkPolicyManagerInternal; import com.android.server.pm.Installer.InstallerException; 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.pm.dex.DexManager; @@ -603,8 +602,6 @@ public class PackageManagerService extends IPackageManager.Stub */ private static final boolean DEFAULT_PACKAGE_PARSER_CACHE_ENABLED = true; - private static final int PROTECTION_MASK_BASE = 0xf; - final ServiceThread mHandlerThread; final PackageHandler mHandler; @@ -5356,10 +5353,8 @@ 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 (!permsState.hasRequestedPermission(bp.name) && index == -1) { + if (index == -1) { throw new SecurityException("Package " + pkg.packageName + " has not requested permission " + bp.name); } @@ -5502,12 +5497,11 @@ public class PackageManagerService extends IPackageManager.Stub @Override public void revokeRuntimePermission(String packageName, String name, int userId) { - revokeRuntimePermission(packageName, name, userId, false /* Only if not fixed by policy */, - mSettings.getPermission(name)); + revokeRuntimePermission(packageName, name, userId, false /* Only if not fixed by policy */); } private void revokeRuntimePermission(String packageName, String name, int userId, - boolean overridePolicy, BasePermission bp) { + boolean overridePolicy) { if (!sUserManager.exists(userId)) { Log.e(TAG, "No such user:" + userId); return; @@ -5533,6 +5527,7 @@ public class PackageManagerService extends IPackageManager.Stub || filterAppAccessLPr(ps, Binder.getCallingUid(), userId)) { throw new IllegalArgumentException("Unknown package: " + packageName); } + final BasePermission bp = mSettings.mPermissions.get(name); if (bp == null) { throw new IllegalArgumentException("Unknown permission: " + name); } @@ -5654,7 +5649,7 @@ public class PackageManagerService extends IPackageManager.Stub try { revokeRuntimePermission(packageName, permissionName, userId, - false, mSettings.getPermission(permissionName)); + false); } catch (IllegalArgumentException e) { Slog.e(TAG, "Could not revoke " + permissionName + " from " + packageName, e); @@ -12270,10 +12265,7 @@ public class PackageManagerService extends IPackageManager.Stub if (DEBUG_REMOVE) Log.d(TAG, " Activities: " + r); } - final ArrayList<String> allPackageNames = new ArrayList<>(mPackages.keySet()); - N = pkg.permissions.size(); - List<BasePermission> bps = new ArrayList<BasePermission>(N); r = null; for (i=0; i<N; i++) { PackageParser.Permission p = pkg.permissions.get(i); @@ -12282,10 +12274,6 @@ public class PackageManagerService extends IPackageManager.Stub bp = mSettings.mPermissionTrees.get(p.info.name); } if (bp != null && bp.perm == p) { - if (((p.info.protectionLevel & PROTECTION_MASK_BASE) & - PermissionInfo.PROTECTION_DANGEROUS) != 0) { - bps.add(bp); - } bp.perm = null; if (DEBUG_REMOVE && chatty) { if (r == null) { @@ -12303,45 +12291,6 @@ public class PackageManagerService extends IPackageManager.Stub } } } - - AsyncTask.execute(() -> { - final int numRemovedPermissions = bps.size(); - for (int permissionNum = 0; permissionNum < numRemovedPermissions; permissionNum++) { - final int[] userIds = mUserManagerInternal.getUserIds(); - final int numUserIds = userIds.length; - - final int numPackages = allPackageNames.size(); - for (int packageNum = 0; packageNum < numPackages; packageNum++) { - final String packageName = allPackageNames.get(packageNum); - final PackageManagerInternal packageManagerInt = - LocalServices.getService(PackageManagerInternal.class); - final ApplicationInfo applicationInfo = packageManagerInt.getApplicationInfo( - packageName, 0, Process.SYSTEM_UID, UserHandle.USER_SYSTEM); - if (applicationInfo != null - && applicationInfo.targetSdkVersion < Build.VERSION_CODES.M) { - continue; - } - for (int userIdNum = 0; userIdNum < numUserIds; userIdNum++) { - final int userId = userIds[userIdNum]; - final String permissionName = bps.get(permissionNum).name; - if (checkPermission(permissionName, packageName, - userId) == PackageManager.PERMISSION_GRANTED) { - try { - revokeRuntimePermission(packageName, - permissionName, - userId, - false, - bps.get(permissionNum)); - } catch (IllegalArgumentException e) { - Slog.e(TAG, "Could not revoke " + permissionName + " from " - + packageName, e); - } - } - } - } - } - }); - if (r != null) { if (DEBUG_REMOVE) Log.d(TAG, " Permissions: " + r); } @@ -24747,7 +24696,7 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); public void revokeRuntimePermission(String packageName, String name, int userId, boolean overridePolicy) { PackageManagerService.this.revokeRuntimePermission(packageName, name, userId, - overridePolicy, mSettings.getPermission(name)); + overridePolicy); } @Override diff --git a/services/core/java/com/android/server/pm/PermissionsState.java b/services/core/java/com/android/server/pm/PermissionsState.java index d494e33cc647..8a427cd329e2 100644 --- a/services/core/java/com/android/server/pm/PermissionsState.java +++ b/services/core/java/com/android/server/pm/PermissionsState.java @@ -291,14 +291,6 @@ public final class PermissionsState { } /** - * 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. * diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 1f8990bd39e7..45d0c585627b 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -448,17 +448,6 @@ final class Settings { mBackupStoppedPackagesFilename = new File(mSystemDir, "packages-stopped-backup.xml"); } - public @Nullable BasePermission getPermission(@NonNull String permName) { - synchronized (mLock) { - return getPermissionLocked(permName); - } - } - - @GuardedBy("mLock") - @Nullable BasePermission getPermissionLocked(@NonNull String permName) { - return mPermissions.get(permName); - } - PackageSetting getPackageLPr(String pkgName) { return mPackages.get(pkgName); } |