From d33e27f8aa215d7bc98f43ad1f3f4b84972afd8b Mon Sep 17 00:00:00 2001 From: Eric Chiang Date: Mon, 17 Apr 2023 13:18:02 -0700 Subject: [PATCH] Fix PackageInfo not being queried per user Currently PackageInfo is always queried using user0. Changes the call to use the calling userId instead. Bug: 272375437 Test: atest --user-type secondary_user_on_secondary_display android.accounts.cts Change-Id: Ia7440a2be4b59317b656fa8abba2a08113beedc3 --- .../android/server/accounts/AccountManagerService.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java index 51d349f542d16..c1a383b79ad80 100644 --- a/services/core/java/com/android/server/accounts/AccountManagerService.java +++ b/services/core/java/com/android/server/accounts/AccountManagerService.java @@ -3018,7 +3018,7 @@ public class AccountManagerService final long identityToken = clearCallingIdentity(); try { // Distill the caller's package signatures into a single digest. - final byte[] callerPkgSigDigest = calculatePackageSignatureDigest(callerPkg); + final byte[] callerPkgSigDigest = calculatePackageSignatureDigest(callerPkg, userId); // if the caller has permission, do the peek. otherwise go the more expensive // route of starting a Session @@ -3182,12 +3182,12 @@ public class AccountManagerService .write(); } - private byte[] calculatePackageSignatureDigest(String callerPkg) { + private byte[] calculatePackageSignatureDigest(String callerPkg, int userId) { MessageDigest digester; try { digester = MessageDigest.getInstance("SHA-256"); - PackageInfo pkgInfo = mPackageManager.getPackageInfo( - callerPkg, PackageManager.GET_SIGNATURES); + PackageInfo pkgInfo = mPackageManager.getPackageInfoAsUser( + callerPkg, PackageManager.GET_SIGNATURES, userId); for (Signature sig : pkgInfo.signatures) { digester.update(sig.toByteArray()); }