From 4709c78879af41857a1189f09445e4e6ba495fea Mon Sep 17 00:00:00 2001 From: Rhed Jao Date: Fri, 4 Sep 2020 14:20:32 +0800 Subject: [PATCH] Don't allow update of a static shared library Unless it's installed from adb which is necessary to work for development purposes. Bug: 140243304 Test: atest StaticSharedLibsHostTests Change-Id: I8609797d563571b06344a4d1efc5903361e1bf41 --- .../java/com/android/server/pm/PackageManagerService.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index bf01fd314207f..9d7298ab6b3bf 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -17758,12 +17758,10 @@ public class PackageManagerService extends IPackageManager.Stub if (parsedPackage.isStaticSharedLibrary()) { // Static libs have a synthetic package name containing the version // and cannot be updated as an update would get a new package name, - // unless this is the exact same version code which is useful for - // development. + // unless this is installed from adb which is useful for development. AndroidPackage existingPkg = mPackages.get(parsedPackage.getPackageName()); if (existingPkg != null - && existingPkg.getLongVersionCode() - != parsedPackage.getLongVersionCode()) { + && (installFlags & PackageManager.INSTALL_FROM_ADB) == 0) { throw new PrepareFailure(INSTALL_FAILED_DUPLICATE_PACKAGE, "Packages declaring " + "static-shared libs cannot be updated");