Merge "[RESTRICT AUTOMERGE][pm] prevent system app downgrades of versions lower than preload" into sc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
f47417fce9
@@ -26715,10 +26715,10 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
// will be null whereas dataOwnerPkg will contain information about the package
|
||||
// which was uninstalled while keeping its data.
|
||||
AndroidPackage dataOwnerPkg = mPackages.get(packageName);
|
||||
PackageSetting dataOwnerPs = mSettings.getPackageLPr(packageName);
|
||||
if (dataOwnerPkg == null) {
|
||||
PackageSetting ps = mSettings.getPackageLPr(packageName);
|
||||
if (ps != null) {
|
||||
dataOwnerPkg = ps.pkg;
|
||||
if (dataOwnerPs != null) {
|
||||
dataOwnerPkg = dataOwnerPs.getPkg();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26742,12 +26742,30 @@ public class PackageManagerService extends IPackageManager.Stub
|
||||
if (dataOwnerPkg != null) {
|
||||
if (!PackageManagerServiceUtils.isDowngradePermitted(installFlags,
|
||||
dataOwnerPkg.isDebuggable())) {
|
||||
// Downgrade is not permitted; a lower version of the app will not be allowed
|
||||
try {
|
||||
checkDowngrade(dataOwnerPkg, pkgLite);
|
||||
} catch (PackageManagerException e) {
|
||||
Slog.w(TAG, "Downgrade detected: " + e.getMessage());
|
||||
return PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE;
|
||||
}
|
||||
} else if (dataOwnerPs.isSystem()) {
|
||||
// Downgrade is permitted, but system apps can't be downgraded below
|
||||
// the version preloaded onto the system image
|
||||
final PackageSetting disabledPs = mSettings.getDisabledSystemPkgLPr(
|
||||
dataOwnerPs);
|
||||
if (disabledPs != null) {
|
||||
dataOwnerPkg = disabledPs.getPkg();
|
||||
}
|
||||
try {
|
||||
checkDowngrade(dataOwnerPkg, pkgLite);
|
||||
} catch (PackageManagerException e) {
|
||||
String errorMsg = "System app: " + packageName + " cannot be downgraded to"
|
||||
+ " older than its preloaded version on the system image. "
|
||||
+ e.getMessage();
|
||||
Slog.w(TAG, errorMsg);
|
||||
return PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user