From c7d576e2e96e35d694a2a75a8bd5201cabaf61b9 Mon Sep 17 00:00:00 2001 From: Elisa Pascual Trevino Date: Wed, 29 Aug 2018 23:19:18 +0000 Subject: Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package." This reverts commit fde947837c848b51a830b74b28f96f9808405492. Reason for revert: b/111752150 Change-Id: Ifc60261cd78e606e01f7a68626a1710699ff7bc7 (cherry picked from commit 307c6c50a7b374b4ab034560bb67a204071b5bca) --- .../android/server/pm/PackageManagerService.java | 3 +- .../pm/permission/PermissionManagerInternal.java | 8 +-- .../pm/permission/PermissionManagerService.java | 81 +++------------------- 3 files changed, 13 insertions(+), 79 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 6286a242dba2..9ed2b9c18546 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -12344,8 +12344,7 @@ public class PackageManagerService extends IPackageManager.Stub if (DEBUG_REMOVE) Log.d(TAG, " Activities: " + r); } - final ArrayList allPackageNames = new ArrayList<>(mPackages.keySet()); - mPermissionManager.removeAllPermissions(pkg, allPackageNames, mPermissionCallback, chatty); + mPermissionManager.removeAllPermissions(pkg, chatty); N = pkg.instrumentation.size(); r = null; diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerInternal.java b/services/core/java/com/android/server/pm/permission/PermissionManagerInternal.java index c3f23a81518a..a042fedf8b47 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerInternal.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerInternal.java @@ -115,11 +115,7 @@ public abstract class PermissionManagerInternal { */ public abstract void addAllPermissions(@NonNull PackageParser.Package pkg, boolean chatty); public abstract void addAllPermissionGroups(@NonNull PackageParser.Package pkg, boolean chatty); - public abstract void removeAllPermissions( - @NonNull PackageParser.Package pkg, - @NonNull List allPackageNames, - @Nullable PermissionCallback permissionCallback, - boolean chatty); + public abstract void removeAllPermissions(@NonNull PackageParser.Package pkg, boolean chatty); public abstract boolean addDynamicPermission(@NonNull PermissionInfo info, boolean async, int callingUid, @Nullable PermissionCallback callback); public abstract void removeDynamicPermission(@NonNull String permName, int callingUid, @@ -193,4 +189,4 @@ public abstract class PermissionManagerInternal { /** HACK HACK methods to allow for partial migration of data to the PermissionManager class */ public abstract @Nullable BasePermission getPermissionTEMP(@NonNull String permName); -} +} \ No newline at end of file diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java index 02c9049f008e..c51a72406b53 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java @@ -30,7 +30,6 @@ import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.content.Context; -import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.content.pm.PackageParser; @@ -38,7 +37,6 @@ import android.content.pm.PermissionGroupInfo; import android.content.pm.PermissionInfo; import android.content.pm.PackageParser.Package; import android.metrics.LogMaker; -import android.os.AsyncTask; import android.os.Binder; import android.os.Build; import android.os.Handler; @@ -457,9 +455,8 @@ public class PermissionManagerService { " to " + newPermissionGroupName); try { - revokeRuntimePermission(permissionName, packageName, - mSettings.getPermission(permissionName), false, - Process.SYSTEM_UID, userId, permissionCallback, false); + revokeRuntimePermission(permissionName, packageName, false, + Process.SYSTEM_UID, userId, permissionCallback); } catch (IllegalArgumentException e) { Slog.e(TAG, "Could not revoke " + permissionName + " from " + packageName, e); @@ -552,59 +549,9 @@ public class PermissionManagerService { } - private void revokeAllPermissions( - @NonNull List bps, - @NonNull List allPackageNames, - @Nullable PermissionCallback permissionCallback) { - AsyncTask.execute(() -> { - final int numRemovedPermissions = bps.size(); - for (int permissionNum = 0; permissionNum < numRemovedPermissions; permissionNum++) { - final int[] userIds = mUserManagerInt.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 ApplicationInfo applicationInfo = mPackageManagerInt.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).getName(); - if (checkPermission(permissionName, packageName, UserHandle.USER_SYSTEM, - userId) == PackageManager.PERMISSION_GRANTED) { - try { - revokeRuntimePermission( - permissionName, - packageName, - bps.get(permissionNum), - false, - Process.SYSTEM_UID, - userId, - permissionCallback, - true); - } catch (IllegalArgumentException e) { - Slog.e(TAG, "Could not revoke " + permissionName + " from " - + packageName, e); - } - } - } - } - } - }); - } - - private void removeAllPermissions( - @NonNull PackageParser.Package pkg, - @NonNull List allPackageNames, - @Nullable PermissionCallback permissionCallback, - boolean chatty) { + private void removeAllPermissions(PackageParser.Package pkg, boolean chatty) { synchronized (mLock) { int N = pkg.permissions.size(); - List bps = new ArrayList(N); StringBuilder r = null; for (int i=0; i allPackageNames, - PermissionCallback permissionCallback, boolean chatty) { - PermissionManagerService.this.removeAllPermissions( - pkg, allPackageNames, permissionCallback, chatty); + public void removeAllPermissions(Package pkg, boolean chatty) { + PermissionManagerService.this.removeAllPermissions(pkg, chatty); } @Override public boolean addDynamicPermission(PermissionInfo info, boolean async, int callingUid, @@ -2170,8 +2110,7 @@ public class PermissionManagerService { boolean overridePolicy, int callingUid, int userId, PermissionCallback callback) { PermissionManagerService.this.revokeRuntimePermission(permName, packageName, - mSettings.getPermission(permName), overridePolicy, callingUid, userId, - callback, false); + overridePolicy, callingUid, userId, callback); } @Override public void updatePermissions(String packageName, Package pkg, boolean replaceGrant, -- cgit v1.2.3