summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jing Ji <a5705c@motorola.com> 2014-10-02 20:45:08 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2014-10-02 20:45:08 +0000
commit5468f545ff66e8fe8db4fdb90dc387ace9756257 (patch)
tree188cb2a062758841143f43dc57b65a159fd059c1
parent17eefabd4494b034d4342f0e239e24085d989109 (diff)
parentd594197868c4a51bb8f8bd62479999debc72bf2a (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.java18
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;
+ }
}
}