diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/Permission.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java | 4 |
2 files changed, 8 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/permission/Permission.java b/services/core/java/com/android/server/pm/permission/Permission.java index c81d6d7d0918..1440a1e2fafe 100644 --- a/services/core/java/com/android/server/pm/permission/Permission.java +++ b/services/core/java/com/android/server/pm/permission/Permission.java @@ -146,6 +146,10 @@ public final class Permission { return mPermissionInfo.packageName; } + public boolean isReconciled() { + return mReconciled; + } + public int getType() { return mType; } diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java index 574f121b033a..b92ae23fdd85 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java @@ -4137,6 +4137,10 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt // being uninstalled, continue; } + // Don't remove config permissions and lose their GIDs. + if (bp.getType() == Permission.TYPE_CONFIG && !bp.isReconciled()) { + continue; + } // The target package is the source of the current permission // Set to changed for either install or uninstall changed = true; |