From 5d6d773fab559fdc12e553d60d789f3991ac552c Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Wed, 13 May 2009 18:09:56 -0700 Subject: [PATCH] AI 148824: Fix issue #1851541 (sharedUserId requests not being checked for matching signatures on .apk). To address issues where we could leave half-installed applications around if there was a failure during the install, we split getPackageLP() into two phases: the first would create the record, and only after doing all verification checks would we call insertPackageSettingLP() to do the remaining part of the original implementation and actually insert the record into the data structures. Unfortunately it was only in insertPackageSettingLP() that we would set the sharedUser field of the PackageSetting structure, so when before that we went to verify certificates, we didn't think it had requested a shared user ID, and let it through without checking. This fix simply sets the sharedUser field when the PackageSetting structure is first created, so we will actually check against its certs. We still also set this again in insertPackageSettingLP(), but there is no harm in this because the only time we call this function is in that big install func, which just passes in the same shared user that it had when first getting the package. BUG=1851541 Automated import of CL 148824 --- services/java/com/android/server/PackageManagerService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index 9e062f4dc1e7..1f3ec2bd1f7e 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -5543,6 +5543,7 @@ class PackageManagerService extends IPackageManager.Stub { } p = new PackageSetting(name, codePath, resourcePath, pkgFlags); p.setTimeStamp(codePath.lastModified()); + p.sharedUser = sharedUser; if (sharedUser != null) { p.userId = sharedUser.userId; } else if (MULTIPLE_APPLICATION_UIDS) { -- 2.11.0