summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server/pm/PackageManagerService.java
diff options
context:
space:
mode:
authorChristopher Tate <ctate@google.com>2013-11-08 12:41:57 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-11-08 12:41:57 -0800
commit1d8f592a752c30534a6e03889f1ba42b232770ef (patch)
tree4ff630e2e905b85c14846285402f3e5ac87f7e18 /services/java/com/android/server/pm/PackageManagerService.java
parent4f59a9216e76207a7003bfe010076aa78eee629a (diff)
parentef12b1d4a9ba6a91b61647feadaf2c4cdf34c356 (diff)
downloadframeworks_base-1d8f592a752c30534a6e03889f1ba42b232770ef.zip
frameworks_base-1d8f592a752c30534a6e03889f1ba42b232770ef.tar.gz
frameworks_base-1d8f592a752c30534a6e03889f1ba42b232770ef.tar.bz2
am ef12b1d4: am ea198841: am ef4694cb: am ae229d99: am 43253333: am 50cbfd55: System package permission decls take precedence over 3rd party apps\'
* commit 'ef12b1d4a9ba6a91b61647feadaf2c4cdf34c356': System package permission decls take precedence over 3rd party apps'
Diffstat (limited to 'services/java/com/android/server/pm/PackageManagerService.java')
-rw-r--r--services/java/com/android/server/pm/PackageManagerService.java12
1 files changed, 12 insertions, 0 deletions
diff --git a/services/java/com/android/server/pm/PackageManagerService.java b/services/java/com/android/server/pm/PackageManagerService.java
index 2238f17..201d705 100644
--- a/services/java/com/android/server/pm/PackageManagerService.java
+++ b/services/java/com/android/server/pm/PackageManagerService.java
@@ -4367,6 +4367,18 @@ public class PackageManagerService extends IPackageManager.Stub {
permissionMap.put(p.info.name, bp);
}
if (bp.perm == null) {
+ if (bp.sourcePackage != null
+ && !bp.sourcePackage.equals(p.info.packageName)) {
+ // If this is a permission that was formerly defined by a non-system
+ // app, but is now defined by a system app (following an upgrade),
+ // discard the previous declaration and consider the system's to be
+ // canonical.
+ if (isSystemApp(p.owner)) {
+ Slog.i(TAG, "New decl " + p.owner + " of permission "
+ + p.info.name + " is system");
+ bp.sourcePackage = null;
+ }
+ }
if (bp.sourcePackage == null
|| bp.sourcePackage.equals(p.info.packageName)) {
BasePermission tree = findPermissionTreeLP(p.info.name);