Merge "[RESTRICT AUTOMERGE][pm] prevent system app downgrades of versions lower than preload" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b4226a794a
@@ -2425,10 +2425,10 @@ final class InstallPackageHelper {
|
|||||||
// will be null whereas dataOwnerPkg will contain information about the package
|
// will be null whereas dataOwnerPkg will contain information about the package
|
||||||
// which was uninstalled while keeping its data.
|
// which was uninstalled while keeping its data.
|
||||||
AndroidPackage dataOwnerPkg = mPm.mPackages.get(packageName);
|
AndroidPackage dataOwnerPkg = mPm.mPackages.get(packageName);
|
||||||
|
PackageSetting dataOwnerPs = mPm.mSettings.getPackageLPr(packageName);
|
||||||
if (dataOwnerPkg == null) {
|
if (dataOwnerPkg == null) {
|
||||||
PackageSetting ps = mPm.mSettings.getPackageLPr(packageName);
|
if (dataOwnerPs != null) {
|
||||||
if (ps != null) {
|
dataOwnerPkg = dataOwnerPs.getPkg();
|
||||||
dataOwnerPkg = ps.getPkg();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2456,6 +2456,7 @@ final class InstallPackageHelper {
|
|||||||
if (dataOwnerPkg != null && !dataOwnerPkg.isSdkLibrary()) {
|
if (dataOwnerPkg != null && !dataOwnerPkg.isSdkLibrary()) {
|
||||||
if (!PackageManagerServiceUtils.isDowngradePermitted(installFlags,
|
if (!PackageManagerServiceUtils.isDowngradePermitted(installFlags,
|
||||||
dataOwnerPkg.isDebuggable())) {
|
dataOwnerPkg.isDebuggable())) {
|
||||||
|
// Downgrade is not permitted; a lower version of the app will not be allowed
|
||||||
try {
|
try {
|
||||||
PackageManagerServiceUtils.checkDowngrade(dataOwnerPkg, pkgLite);
|
PackageManagerServiceUtils.checkDowngrade(dataOwnerPkg, pkgLite);
|
||||||
} catch (PackageManagerException e) {
|
} catch (PackageManagerException e) {
|
||||||
@@ -2464,6 +2465,24 @@ final class InstallPackageHelper {
|
|||||||
return Pair.create(
|
return Pair.create(
|
||||||
PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE, errorMsg);
|
PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE, errorMsg);
|
||||||
}
|
}
|
||||||
|
} 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 = mPm.mSettings.getDisabledSystemPkgLPr(
|
||||||
|
dataOwnerPs);
|
||||||
|
if (disabledPs != null) {
|
||||||
|
dataOwnerPkg = disabledPs.getPkg();
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
PackageManagerServiceUtils.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 Pair.create(
|
||||||
|
PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE, errorMsg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user