OSDN Git Service

Fix accounting of permission gids.
authorSvetoslav <svetoslavganov@google.com>
Fri, 10 Apr 2015 22:31:21 +0000 (15:31 -0700)
committerSvetoslav <svetoslavganov@google.com>
Fri, 10 Apr 2015 22:33:03 +0000 (15:33 -0700)
bug:20143490

Change-Id: I718d4db74ebf003616241710a67774b2e2e5384f

services/core/java/com/android/server/pm/BasePermission.java
services/core/java/com/android/server/pm/PermissionsState.java

index ec290ef..30f8b37 100644 (file)
@@ -74,10 +74,6 @@ final class BasePermission {
         this.perUser = perUser;
     }
 
-    public boolean hasGids() {
-        return ArrayUtils.isEmpty(gids);
-    }
-
     public int[] computeGids(int userId) {
         if (perUser) {
             final int[] userGids = new int[gids.length];
index 705abf8..fbb5090 100644 (file)
@@ -221,13 +221,11 @@ public final class PermissionsState {
         int result = PERMISSION_OPERATION_SUCCESS;
 
         PermissionData permissionData = mPermissions.get(permission.name);
-        if (permissionData.hasGids()) {
-            for (int userId : permissionData.getUserIds()) {
-                if (revokePermission(permission, userId)
-                        == PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED) {
-                    result = PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED;
-                    break;
-                }
+        for (int userId : permissionData.getUserIds()) {
+            if (revokePermission(permission, userId)
+                    == PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED) {
+                result = PERMISSION_OPERATION_SUCCESS_GIDS_CHANGED;
+                break;
             }
         }
 
@@ -380,7 +378,7 @@ public final class PermissionsState {
             return PERMISSION_OPERATION_FAILURE;
         }
 
-        final boolean hasGids = permission.hasGids();
+        final boolean hasGids = !ArrayUtils.isEmpty(permission.computeGids(userId));
         final int[] oldGids = hasGids ? computeGids(userId) : NO_GIDS;
 
         if (mPermissions == null) {
@@ -412,7 +410,7 @@ public final class PermissionsState {
             return PERMISSION_OPERATION_FAILURE;
         }
 
-        final boolean hasGids = permission.hasGids();
+        final boolean hasGids = !ArrayUtils.isEmpty(permission.computeGids(userId));
         final int[] oldGids = hasGids ? computeGids(userId) : NO_GIDS;
 
         PermissionData permissionData = mPermissions.get(permission.name);
@@ -472,10 +470,6 @@ public final class PermissionsState {
             }
         }
 
-        public boolean hasGids() {
-            return mPerm.hasGids();
-        }
-
         public int[] computeGids(int userId) {
             return mPerm.computeGids(userId);
         }