diff options
| author | 2015-06-08 18:20:35 +0000 | |
|---|---|---|
| committer | 2015-06-08 18:20:47 +0000 | |
| commit | b5766468538de200d26012d96019db26bccac5d4 (patch) | |
| tree | 58ea5f78d0f601224046fde796b7f0502a0b5054 | |
| parent | 266894644a160a93949cb82f5f969bef4ad91532 (diff) | |
| parent | f61ae2de25a2dd09024bf5a8462b4408203c928b (diff) | |
Merge "Add SYSTEM_DIR check to upgrade-key-set verification." into mnc-dev
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 939bb1a7d66d..604ac97838e2 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -6166,9 +6166,16 @@ public class PackageManagerService extends IPackageManager.Stub { } } else { if (!checkUpgradeKeySetLP(pkgSetting, pkg)) { - throw new PackageManagerException(INSTALL_FAILED_UPDATE_INCOMPATIBLE, "Package " - + pkg.packageName + " upgrade keys do not match the " - + "previously installed version"); + if ((parseFlags & PackageParser.PARSE_IS_SYSTEM_DIR) == 0) { + throw new PackageManagerException(INSTALL_FAILED_UPDATE_INCOMPATIBLE, + "Package " + pkg.packageName + " upgrade keys do not match the " + + "previously installed version"); + } else { + pkgSetting.signatures.mSignatures = pkg.mSignatures; + String msg = "System package " + pkg.packageName + + " signature changed; retaining data."; + reportSettingsProblem(Log.WARN, msg); + } } else { // We just determined the app is signed correctly, so bring // over the latest parsed certs. |