diff options
| author | 2014-10-02 20:45:08 +0000 | |
|---|---|---|
| committer | 2014-10-02 20:45:08 +0000 | |
| commit | 5468f545ff66e8fe8db4fdb90dc387ace9756257 (patch) | |
| tree | 188cb2a062758841143f43dc57b65a159fd059c1 | |
| parent | 17eefabd4494b034d4342f0e239e24085d989109 (diff) | |
| parent | d594197868c4a51bb8f8bd62479999debc72bf2a (diff) | |
am d5941978: Allow system app to take ownership of built-in permissions
* commit 'd594197868c4a51bb8f8bd62479999debc72bf2a':
Allow system app to take ownership of built-in permissions
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 851cf17787e9..50cb5fc79f55 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -5960,11 +5960,19 @@ public class PackageManagerService extends IPackageManager.Stub { if (bp != null && !Objects.equals(bp.sourcePackage, p.info.packageName)) { final boolean currentOwnerIsSystem = (bp.perm != null && isSystemApp(bp.perm.owner)); - if (isSystemApp(p.owner) && !currentOwnerIsSystem) { - String msg = "New decl " + p.owner + " of permission " - + p.info.name + " is system; overriding " + bp.sourcePackage; - reportSettingsProblem(Log.WARN, msg); - bp = null; + if (isSystemApp(p.owner)) { + if (bp.type == BasePermission.TYPE_BUILTIN && bp.perm == null) { + // It's a built-in permission and no owner, take ownership now + bp.packageSetting = pkgSetting; + bp.perm = p; + bp.uid = pkg.applicationInfo.uid; + bp.sourcePackage = p.info.packageName; + } else if (!currentOwnerIsSystem) { + String msg = "New decl " + p.owner + " of permission " + + p.info.name + " is system; overriding " + bp.sourcePackage; + reportSettingsProblem(Log.WARN, msg); + bp = null; + } } } |