Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d33e27f8 authored by Eric Chiang's avatar Eric Chiang
Browse files

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
parent c2b50738
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -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());
            }