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 Change-Id: I983fac0ae742bbd426cbc02e854564083702a89f
This commit is contained in:
@@ -16,16 +16,23 @@
|
||||
package android.accounts;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Bundle;
|
||||
import android.widget.TextView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.view.View;
|
||||
import android.view.LayoutInflater;
|
||||
import android.app.ActivityTaskManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
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.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.android.internal.R;
|
||||
|
||||
import java.io.IOException;
|
||||
@@ -42,6 +49,7 @@ public class GrantCredentialsPermissionActivity extends Activity implements View
|
||||
private Account mAccount;
|
||||
private String mAuthTokenType;
|
||||
private int mUid;
|
||||
private int mCallingUid;
|
||||
private Bundle mResultBundle = null;
|
||||
protected LayoutInflater mInflater;
|
||||
|
||||
@@ -74,6 +82,20 @@ public class GrantCredentialsPermissionActivity extends Activity implements View
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
IBinder activityToken = getActivityToken();
|
||||
mCallingUid = ActivityTaskManager.getService().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;
|
||||
try {
|
||||
accountTypeLabel = getAccountLabel(mAccount);
|
||||
|
||||
Reference in New Issue
Block a user