am f667c8d3: Merge "grantPermissionsLPw: introduce isNewPlatformPermissionForPackage" into jb-mr2-dev

* commit 'f667c8d327a6ae236468cbcf9f7536cf6d17e578':
  grantPermissionsLPw: introduce isNewPlatformPermissionForPackage
This commit is contained in:
Nick Kralevich
2013-04-02 12:48:23 -07:00
committed by Android Git Automerger

View File

@@ -5158,22 +5158,10 @@ public class PackageManagerService extends IPackageManager.Stub {
// If this is an existing, non-system package, then
// we can't add any new permissions to it.
if (!allowedSig && !gp.grantedPermissions.contains(perm)) {
allowed = false;
// Except... if this is a permission that was added
// to the platform (note: need to only do this when
// updating the platform).
final int NP = PackageParser.NEW_PERMISSIONS.length;
for (int ip=0; ip<NP; ip++) {
final PackageParser.NewPermissionInfo npi
= PackageParser.NEW_PERMISSIONS[ip];
if (npi.name.equals(perm)
&& pkg.applicationInfo.targetSdkVersion < npi.sdkVersion) {
allowed = true;
Log.i(TAG, "Auto-granting " + perm + " to old pkg "
+ pkg.packageName);
break;
}
}
allowed = isNewPlatformPermissionForPackage(perm, pkg);
}
}
if (allowed) {
@@ -5219,6 +5207,23 @@ public class PackageManagerService extends IPackageManager.Stub {
ps.haveGids = true;
}
private boolean isNewPlatformPermissionForPackage(String perm, PackageParser.Package pkg) {
boolean allowed = false;
final int NP = PackageParser.NEW_PERMISSIONS.length;
for (int ip=0; ip<NP; ip++) {
final PackageParser.NewPermissionInfo npi
= PackageParser.NEW_PERMISSIONS[ip];
if (npi.name.equals(perm)
&& pkg.applicationInfo.targetSdkVersion < npi.sdkVersion) {
allowed = true;
Log.i(TAG, "Auto-granting " + perm + " to old pkg "
+ pkg.packageName);
break;
}
}
return allowed;
}
private boolean doSignaturePermission(String perm, PackageParser.Package pkg,
BasePermission bp, HashSet<String> origPermissions) {
boolean allowed;