OSDN Git Service

Revert "RESTRICT AUTOMERGE: Revoke permissions defined in a to-be removed package."
authorElisa Pascual Trevino <elisapascual@google.com>
Wed, 29 Aug 2018 23:20:38 +0000 (23:20 +0000)
committerandroid-build-team Robot <android-build-team-robot@google.com>
Thu, 30 Aug 2018 04:26:22 +0000 (04:26 +0000)
This reverts commit 821076440434443af4257c5ba0b7b1f037735041.

Reason for revert: b/111752150

Change-Id: I035cfcacaeaf798b8aea7fe62376624d06c64388
(cherry picked from commit 9cd13a2bd5ca2546da7a15182b0ddf1a81f2e7da)

services/core/java/com/android/server/pm/PackageManagerService.java
services/core/java/com/android/server/pm/Settings.java

index 287bce5..d6b5728 100644 (file)
@@ -624,8 +624,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;
@@ -5763,12 +5761,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;
@@ -5794,6 +5791,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);
             }
@@ -5915,7 +5913,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);
@@ -12794,10 +12792,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);
@@ -12806,10 +12801,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) {
@@ -12827,45 +12818,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);
         }
@@ -25573,7 +25525,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
index c116d83..56835f6 100644 (file)
@@ -449,17 +449,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);
     }