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

Commit 3bf558af authored by Dmitry Dementyev's avatar Dmitry Dementyev Committed by Vasyl Gello
Browse files

Ignore GrantCredentials call with unexpected calling uid.



Activity can be used only in two cases.
1) Calling uid matches uid grantee.
2) Calling uid is is system. This flow is used by getToken methods with
notifyAuthFailure=true.

Test: Existing CTS tests
Bug: 158480899
Merged-In: I983fa

[basilgello: Back-port to 14.1:
 - ActivityManager.getService() -> ActivityManagerNative.getDefault()]
Signed-off-by: default avatarVasyl Gello <vasek.gello@gmail.com>

Change-Id: I8da362df269decd7c3930a2387f42e09796e732f
(cherry picked from commit 88787b77)
parent 653e64f0
Loading
Loading
Loading
Loading
+28 −6
Original line number Original line Diff line number Diff line
@@ -16,16 +16,23 @@
package android.accounts;
package android.accounts;


import android.app.Activity;
import android.app.Activity;
import android.content.res.Resources;
import android.app.ActivityManagerNative;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.LinearLayout;
import android.view.View;
import android.view.LayoutInflater;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.IBinder;
import android.os.Process;
import android.os.RemoteException;
import android.os.UserHandle;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.android.internal.R;
import com.android.internal.R;


import java.io.IOException;
import java.io.IOException;
@@ -42,6 +49,7 @@ public class GrantCredentialsPermissionActivity extends Activity implements View
    private Account mAccount;
    private Account mAccount;
    private String mAuthTokenType;
    private String mAuthTokenType;
    private int mUid;
    private int mUid;
    private int mCallingUid;
    private Bundle mResultBundle = null;
    private Bundle mResultBundle = null;
    protected LayoutInflater mInflater;
    protected LayoutInflater mInflater;


@@ -74,6 +82,20 @@ public class GrantCredentialsPermissionActivity extends Activity implements View
            return;
            return;
        }
        }


        try {
            IBinder activityToken = getActivityToken();
            mCallingUid = ActivityManagerNative.getDefault().getLaunchedFromUid(activityToken);
        } catch (RemoteException re) {
            // Couldn't figure out caller details
            Log.w(getClass().getSimpleName(), "Unable to get caller identity \n" + re);
        }

        if (!UserHandle.isSameApp(mCallingUid, Process.SYSTEM_UID) && mCallingUid != mUid) {
            setResult(Activity.RESULT_CANCELED);
            finish();
            return;
        }

        String accountTypeLabel;
        String accountTypeLabel;
        try {
        try {
            accountTypeLabel = getAccountLabel(mAccount);
            accountTypeLabel = getAccountLabel(mAccount);