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

Commit 3925dd07 authored by Azhara Assanova's avatar Azhara Assanova
Browse files

Fix ActivityCallerState's user id resolution

The convertToGrantUri method uses an incorrect default value for the
user id. This changes fixes it by retrieving the user id from the uid.

Bug: 326819726
Test: atest CtsAndroidAppTestCases:android.app.cts.ComponentCallerTest
Test: atest CtsAndroidAppTestCases:android.app.cts.ComponentCallerTest --user-type secondary_user
Test: run above on phone and auto targets
Change-Id: Ib5767bcec0045be692f41949fbd4e2e80a08b8aa
parent d44492f0
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -119,7 +119,7 @@ final class ActivityCallerState {

            if (!hasRead && !hasWrite) {
                callerInfo.mInaccessibleContentUris.add(convertToGrantUri(contentUri,
                        /* modeFlags */ 0));
                        /* modeFlags */ 0, callerUid));
            }
        }
    }
@@ -164,7 +164,7 @@ final class ActivityCallerState {

    private boolean addContentUriIfUidHasPermission(Uri contentUri, int uid, int modeFlags,
            ArraySet<GrantUri> grantUris) {
        final GrantUri grantUri = convertToGrantUri(contentUri, modeFlags);
        final GrantUri grantUri = convertToGrantUri(contentUri, modeFlags, uid);
        if (mAtmService.mUgmInternal.checkUriPermission(grantUri, uid,
                modeFlags, /* isFullAccessForContentUri */ true)) {
            grantUris.add(grantUri);
@@ -173,9 +173,9 @@ final class ActivityCallerState {
        return false;
    }

    private static GrantUri convertToGrantUri(Uri contentUri, int modeFlags) {
    private static GrantUri convertToGrantUri(Uri contentUri, int modeFlags, int uid) {
        return new GrantUri(ContentProvider.getUserIdFromUri(contentUri,
                UserHandle.getCallingUserId()), ContentProvider.getUriWithoutUserId(contentUri),
                UserHandle.getUserId(uid)), ContentProvider.getUriWithoutUserId(contentUri),
                modeFlags);
    }