diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 7a76fa0f2dad3..7f49c6ad7aa8b 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -999,7 +999,7 @@ class PackageManagerService extends IPackageManager.Stub { + "; regranting permissions for internal storage"); mSettings.mInternalSdkPlatform = mSdkVersion; - updatePermissionsLP(null, null, true, regrantPermissions); + updatePermissionsLP(null, null, true, regrantPermissions, regrantPermissions); mSettings.writeLP(); @@ -4007,7 +4007,8 @@ class PackageManagerService extends IPackageManager.Stub { } private void updatePermissionsLP(String changingPkg, - PackageParser.Package pkgInfo, boolean grantPermissions, boolean replace) { + PackageParser.Package pkgInfo, boolean grantPermissions, + boolean replace, boolean replaceAll) { // Make sure there are no dangling permission trees. Iterator it = mSettings.mPermissionTrees .values().iterator(); @@ -4077,7 +4078,7 @@ class PackageManagerService extends IPackageManager.Stub { if (grantPermissions) { for (PackageParser.Package pkg : mPackages.values()) { if (pkg != pkgInfo) { - grantPermissionsLP(pkg, false); + grantPermissionsLP(pkg, replaceAll); } } } @@ -4693,7 +4694,7 @@ class PackageManagerService extends IPackageManager.Stub { if (p != null) { synchronized (mPackages) { updatePermissionsLP(p.packageName, p, - p.permissions.size() > 0, false); + p.permissions.size() > 0, false, false); } addedPackage = p.applicationInfo.packageName; addedUid = p.applicationInfo.uid; @@ -5730,7 +5731,7 @@ class PackageManagerService extends IPackageManager.Stub { // Restore of old package succeeded. Update permissions. synchronized (mPackages) { updatePermissionsLP(deletedPackage.packageName, deletedPackage, - true, false); + true, false, false); mSettings.writeLP(); } Slog.i(TAG, "Successfully restored package : " + pkgName + " after failed upgrade"); @@ -5847,7 +5848,7 @@ class PackageManagerService extends IPackageManager.Stub { } synchronized (mPackages) { updatePermissionsLP(newPackage.packageName, newPackage, - newPackage.permissions.size() > 0, true); + newPackage.permissions.size() > 0, true, false); res.name = pkgName; res.uid = newPackage.applicationInfo.uid; res.pkg = newPackage; @@ -6243,7 +6244,7 @@ class PackageManagerService extends IPackageManager.Stub { outInfo.removedUid = mSettings.removePackageLP(packageName); } if (deletedPs != null) { - updatePermissionsLP(deletedPs.name, null, false, false); + updatePermissionsLP(deletedPs.name, null, false, false, false); if (deletedPs.sharedUser != null) { // remove permissions associated with package mSettings.updateSharedUserPermsLP(deletedPs, mGlobalGids); @@ -6325,7 +6326,7 @@ class PackageManagerService extends IPackageManager.Stub { return false; } synchronized (mPackages) { - updatePermissionsLP(newPkg.packageName, newPkg, true, true); + updatePermissionsLP(newPkg.packageName, newPkg, true, true, false); mSettings.writeLP(); } return true; @@ -9723,7 +9724,7 @@ class PackageManagerService extends IPackageManager.Stub { // Make sure group IDs have been assigned, and any permission // changes in other apps are accounted for - updatePermissionsLP(null, null, true, regrantPermissions); + updatePermissionsLP(null, null, true, regrantPermissions, regrantPermissions); // Persist settings mSettings.writeLP(); }